Forum: Mikrocontroller und Digitale Elektronik Text per Taster eintippen


von Max (Gast)


Lesenswert?

Hallo,

wie kann ich mit angeschlossenen Taster (die als Tastatur funktionieren
sollen) einen Text auf´s angeschlossene Lcd-Display schreiben.
Ich programmiere mit Bascom und einem 2313

Gruß und Dankeschön  Max

von Chriss (Gast)


Lesenswert?

Wieviele Taster haste denn zur Verfügung?

Prinzipiell sollte es mit einem einzelnen gehen, aber dann mußt du
alles über Zeitunterschiede machen, also Wie lange der Taster gedrückt
wird etc.

Gruss
Chriss

von Ratber (Gast)


Lesenswert?

Yo,Ein Problem ohne jegliche Information.

Typisch Weihnachtstopics.


@Max


Schau dich mal in der Bascomhilfe um da wird ne Matrixtastatur
behandelt.

Kannst dir das also entsprechend anpassen.

von Max (Gast)


Lesenswert?

Meine Frage bezog sich eigentlich auf Allgemeine Vorgehen.
Wie es überhaupt funktioniert...
Da ich einen Text schreiben will muss ich Taster von a-z haben.
Mittlerweile habe ich es mit einer Schleife gelöst und waitms 180
dahintergehängt, damit wirklich nur ein Buchstaben pro Tastendruck
angezeigt wird.
Mit der Bascom Hilfe konnte ich in diesem Fall leider nicht zu viel
anfangen.

von Rufus T. Firefly (Gast)


Lesenswert?

Schließ' doch einfach 'ne PC-Tastatur an. Da bist Du das Problem des
Entprellen los (das macht der µC in der Tastatur selbst), brauchst nur
zwei Portleitungen und musst so gut wie kein Geld investieren -
einfache PC-Tastaturen bekommt man für unter 10 EUR.

von Ratber (Gast)


Lesenswert?

@Max

>Meine Frage bezog sich eigentlich auf Allgemeine Vorgehen.
>Wie es überhaupt funktioniert...
>Da ich einen Text schreiben will muss ich Taster von a-z haben.

Geht auch mit mehrfachbelegungen ala Handy/Schnurlostelefon.


>Mittlerweile habe ich es mit einer Schleife gelöst und waitms 180
>dahintergehängt, damit wirklich nur ein Buchstaben pro Tastendruck
>angezeigt wird.


>Mit der Bascom Hilfe konnte ich in diesem Fall leider nicht zu viel
>anfangen.

Dann haste se nicht richtig gelesen (Häufiger Fehler.Schnell was
zusammenkloppen und dabei keine Zeit für die Hilfe haben) denn wenn
dann wäre dir "Debounce" aufgefallen der einzig und alleine genau für
den Zweck einer Entprellung einer Taste oder eines Schalters gedacht
ist. '-)

von Chriss (Gast)


Lesenswert?

Kennst du diese APP-Note schon?

http://www.atmel.com/dyn/resources/prod_documents/doc1232.pdf

Das ist eine Ansteuerung einer 4x4 Tastatur erläutert, allerdings
Assembler, glaub ich.

Gruss
Chriss

von Max (Gast)


Lesenswert?

@Ratber
Das mit Debounce hab ich schon versucht hat aber bei mir nicht so ganz
geklappt, da ich nicht wusste wie man es einbindet und
konfiguriert...trotz Bascom Hilfebeispiel
Aber da werd ich mir das nochmal genauer angucken müssen, wenn man das
mit diesem normal macht

@Chriss ja kenn ich schon...aber ich brauche 26 Taster.
4x4=16 ...wenn man jetzt eine zweite Matrix mit 4x4 noch dazu
anschließen würde (parallel?)dann hätte ich 32 und hätte sogar noch en
paar frei.
nur wie frage ich dann einen parallelangeschlossene Tastatur ab??

von Ratber (Gast)


Lesenswert?

Was ist denn an der Bascom-Hilfe so schwer ?


=============================================

Example
'-----------------------------------------------------
'                 DEBOUN.BAS
'           Demonstrates DEBOUNCE
'-----------------------------------------------------
Config Debounce = 30                                          'when
the config statement is not used a default of 25mS will be used


  'Debounce Pind.0 , 1 , Pr 'try this for branching when high(1)
  Debounce Pind.0 , 0 , Pr , Sub
  Debounce Pind.0 , 0 , Pr , Sub
  '                    ^----- label to branch to
  '               ^---------- Branch when P1.0 goes low(0)
  '         ^---------------- Examine P1.0

  'When Pind.0 goes low jump to subroutine Pr
  'Pind.0 must go high again before it jumps again
  'to the label Pr when Pind.0 is low

  Debounce Pind.0 , 1 , Pr                                    'no
branch
  Debounce Pind.0 , 1 , Pr                                    'will
result in a return without gosub
End

Pr:
  Print "PIND.0 was/is low"
Return


=======================================0
(Farbliche Hervorhebungen fehlen)

Also da ist alles sonnenklar erklärt und kommentiert.



Du hast anscheinend arge Probleme damit Bascom zu verstehen.

Warum ?

von Nilspeter (Gast)


Lesenswert?

@Max:

von Bascom weiss ich gar nix...

..aber Du kannst ja doch einfach ne 6x6-Tastatur-Matrix oder ne
5x6-Matrix basteln...hast genauso viele Tasten und verbrätst nicht so
viele Portpins....

Und Gruss!

von Jens (Gast)


Lesenswert?

@Nilspeter


>von Bascom weiss ich gar nix...

Aber mitreden wollen. tststs


>..aber Du kannst ja doch einfach ne 6x6-Tastatur-Matrix oder ne
>5x6-Matrix basteln...hast genauso viele Tasten und verbrätst nicht so
>viele Portpins....


Ja,was meinste denn wovon die Leute hier reden ?


Sorry wenn es nun hart klingt aber wenn man nicht richtig mitliest und
vom betreffenden Compiler nix weiß dann hält man sich besser raus aus
dem Thema.

Oder bringst du auch woanders Kommentare zu Themen von denen du auch
nix weißt ?

von Max (Gast)


Lesenswert?

"Du hast anscheinend arge Probleme damit Bascom zu verstehen.

Warum ?"

weil ich noch nicht soviel programmiert habe (außer halt Pascal (;)

Ich habe ehrlich gesagt auch noch nicht so ganz den Anschluss einer
Matrix verstanden.Bei 5x6 hätte ich ja 30 Taster und 11 Anschlüsse?
Oder hab ich das doch richtig verstanden? Aber wo schließe ich dann 11
Anschlüsse an einen 2313 an . Ich habe schon mal gelesen, dass man da
so viel bzw noch viel mehr anschließen kann ..nur ist mir das noch
nicht ganz klar(trotz verschiedenenr Tutorials)

Könntest du mir diesen Part vielleicht doch mal kurz erklären:
  'Debounce Pind.0 , 1 , Pr 'try this for branching when high(1)
  Debounce Pind.0 , 0 , Pr , Sub
  Debounce Pind.0 , 0 , Pr , Sub
  '                    ^----- label to branch to
  '               ^---------- Branch when P1.0 goes low(0)
  '         ^---------------- Examine P1.0

DAnkeschön (;

von Jens123 (Gast)


Lesenswert?

Hallo
wieviel "Text" willst du denn eintippen???

1,2,3 Zeichen oder ganze Romane?

wenn es sich nur um ein paar kleine Strings handelt wuerde ich endweder
4 - 5 Tasten nehmen
Taste1 Set
Taste2 Vor
Taste3 Zurueck
Taste4 Zeichen hoch
Taste5 Zeichen runter

in dieser Art laeuft das auch in einigen OnScreenMenes bei Media
geraeten wie Fernseher etc

kannst ja mal schauen, ob du irgendwo einen kleinen Joystick findest
damit sind geuebte Finnger recht flot

oder eben die doppelt bis 4fach belegte Zahlentasten wie bei einem
Handy oder Telefon.. da brauchtest 3 + 4 Leitungen evtl kannst du auch
4 + 4 leitungen nutzen und hast noch einge Tasten frei fuer Diverse
Aufgaben wie Save Print etc

Mit freundlichen Grüßen Jens

von Ratber (Gast)


Lesenswert?

@Max


>weil ich noch nicht soviel programmiert habe (außer halt Pascal (;)

Ja,das ist verständlich aber es ändert ja nix daran das du mit der
Hilfe nicht klarkommst denn da steht eigentlich alles drinne.

Sogar schöne Beispiele gibt es dort zu fast jedem Befehl


Das man sich erstmal einliest halte ich dabei für selbstverständlich.

Da du schon in Pascal programiert hast sollte dir der Einstig
eigentlich noch viel einfacher fallen.


>Ich habe ehrlich gesagt auch noch nicht so ganz den Anschluss einer
>Matrix verstanden.Bei 5x6 hätte ich ja 30 Taster und 11 Anschlüsse?

Das ist korrekt.

Wenn ein Taster geschlossen wird dann verbindet er eine Spalte mit
einer Zeile und damit ist die Taste lokalisierbar.
Die auswertung erfolgt dann in Software.


>Oder hab ich das doch richtig verstanden? Aber wo schließe ich dann
>11
>Anschlüsse an einen 2313 an .

Direkt anschließen kannst du das natürlich nur an einen Controller der
auch die entsprechenden Ports hat.

soviel sollte noch Logisch sein oder ?

>Ich habe schon mal gelesen, dass man da
>so viel bzw noch viel mehr anschließen kann ..nur ist mir das noch
>nicht ganz klar(trotz verschiedenenr Tutorials)

Das ist garnicht so kompliziert wie es sich anhöhrt.

Es gibt mehrere Möglichkeiten aber ich greife mal 2 heraus die recht
Brauchbar sind.

Zum einen nimmst du 3 Portpinne und 1 bis X (Je nach Zahl der
benötigten Bits) Bidirektionale Schieberegister (Oder I2C
Portbausteine) und machst es Seriell.

Da die Lesegeschwindigkeit eh nicht sehr hoch sein muß reicht das
vollkommen aus und du brauchst eben nur 3 Portbits egal ob 4x4 oder
16x16 Matrix (Immerhin 256 mögliche Tasten)


Die andere Möglichkeit ist einen (Oder mehrere. je Nach Zahl der
Tasten) AD-Port zu nehmen und mit den Tasten eine Matrix plus
Widerständen aufzubauen.

Eine 4x4 Matrix braucht dann nurnoch einen AD-eingang und hat immernoch
eine gute zuverlässige Lesemöglichkeit.



>Könntest du mir diesen Part vielleicht doch mal kurz erklären:
>  'Debounce Pind.0 , 1 , Pr 'try this for branching when high(1)
>  Debounce Pind.0 , 0 , Pr , Sub
>  Debounce Pind.0 , 0 , Pr , Sub
>  '                    ^----- label to branch to
>  '               ^---------- Branch when P1.0 goes low(0)
>  '         ^---------------- Examine P1.0


Yo,kann ich.(Steht aber auch schon in der Befehlerklärung)


Die Syntax ist  "DEBOUNCE  Px.y , state , label  [ , SUB]"


"Px,Y" Steht für Port und Bit (zb. Port A Bit 4 wäre "Debounce
PinA.4"

"State" gibt an wann ein Tastendruck erkannt werden soll.
Also entweder bei Logisch 1 (Wenn Taster Schließt) oder 0 (Wenn Öffner
verwendet werden)

"Label" gibt an zu welcher Routine es geht wenn eine Taste gedrückt
wird.
Steht da also "Williwutz" dann springt er zur Routine "Williwutz"

Und wenn dann noch hinten ein "Sub" steht dann gilt der Sprung nicht
nur als "Goto" sondern als "Gosub" also als klassischer
Unterroutinenaufruf mit rückkehr wenn diese erledigt ist.

Das ist schon alles.


Mit "Configdebiounce" wird dann noch festgelegt wie lange die
Prüfzeit (in Millisekunden)  ist bevor die der Tastendruck als gültig
gegeben wird.

Fehlt "Configdebounce" dann wird standardmäßig 25ms genommen.

Hast du also Taster die länger als 25ms Prellen dann wird eben
entsprechend verlängert um fehlinterpretationen zu vermeiden.


Und mal so nebenbei:

Mit 99% der Befehler in Bascom bin ich sofort zurechtgekommen.
Beim Rest hab ich dann auch etwas nachdenken müssen wie man das so
gemeint haben könnte aber mit "mal eben" rumprobieren war das auch
kein akt.

Das ist übrigens die beste Methode.

Einfach mal auf nem Steckboard alles ausprobieren und rumspielen.
Dann kommen auch schnell die Ideen wie man möglichst effektiv mit dem
Controller Arbeiten kann.

Hau dir ne kleine 4x4 Matrix drann und einige LED's,vieleicht noch nen
LCD und Spiel ne Weile mit dem Teil herum (Den Controller kannste locker
über 10'000 mal programieren.(Meist das Doppelte) bis der Speicher
schlapp macht).

Das nimmt die Hemmungen und gibt Übung mit allen Komponennten.

Von "0" direkt auf Anhieb auf "Endprodukt" wirds meistens garnix.



Oder hast du schon jemanden gesehen der sofort nach dem ersten
aufsteigen perfekt mit seinem Krad umgehen konnte ?

Ich nicht.
Ich brauch bei jedem neuen Bock immer ne Weile (mit viel Probieren) bis
ich behaupten kann das ich ihn behersche und nicht er mich.

Bei Controllern und sprachen ist es genauso.

Vielzuviele wollen ohne Übung gleich ein Megaprojekt auf die Beine
stellen und oft landet der ganze Dreck dann nach einigen Problemen in
der Ecke weil man zb. nichtmal genau weiß wie man die Ports richtig
beschaltet und auch anspricht.

Lass dir also Zeit und Probier rum bis der Professor glüht.
anders lernste nix.  '-)

von Jens123 (Gast)


Lesenswert?

>

Lass dir also Zeit und Probier rum bis der Professor glüht.

*=)*
Zitat eines Kollegens
"... der Schmit Trigger... " =)

Gruss

von Ratber (Gast)


Lesenswert?

Yo oder der "Donauschifffartskapitän" '-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.