Tastatur an Analogport

Watson

Neues Mitglied
16. Feb. 2013
4
0
0
65
Sprachen
Hallo, ich bin hier neu und möchte mich erst mal vorstellen.
Ich heiße Frank und arbeite als Straßenbahnfahrer. Mein Hobby ist Modellbau. Bisher habe ich U-Bootmodelle , Schiffe, Flugmodelle, Panzer und Autos gebaut und baue sie auch weiterhin.
Mit Basic-Programmierung habe ich in den 80iger Jahren mit einem KC 87 begonnen.
Meine letzten Projekte waren mit dem C-Control für den Wohnwagen den Wasserstand,
die Spannung der 12 Voltanlage, und die Temperatur abzufragen. Ein Kurzzeitwecker gehört auch in den Wohnwagencomputer. Der Aquariencomputer steuert das Licht, den Heizer, die CO2- Anlage Die CO2- Anlage wird nur über ein Relay ein und ausgeschaltet. Es wird keine Messung vorgenommen.
Tastaturabfragen werden über einen Analog-Port gemacht. Der C-Control bietet dafür in Basic++ sehr schöne Beispiele und fertig ladbare Routinen. Deshalb musste ich mich bisher nicht sehr intensiv mit diesem Problem beschäftigen.
Jetzt habe ich aus verschiedenen Gründen entschieden, mich mit der Programmierung der ATmega Controler, zu beschäftigen. Bascom Basic sollte für mich die erste Wahl sein.
Ich arbeite zur Zeit noch mit der „Demo“ und ohne Hardware.
Ich möchte an einem „Mega 328P - 20 Mhz“ eine Tastatur ebenfalls am Analogport betreiben. Diese ist noch vom C-Control vorhanden. Eine Matrixtastatur scheidet aus, weil ich einen Quarz zwischen Port PB6 und PB7 einbauen möchte. Beim Lesen der Literatur habe ich es so verstanden, dass beim Verwenden der Matrixtastatur der Quarz keinen Platz hat. Ist doch richtig?
Über die Tastatur soll ein 6 stelliger Code für jede Unterroutine oder das Einstellen der Uhrzeit eingegeben werden. Jede Taste mit einer Zahlenreihe zu definieren reicht nicht,
da es zu wenig Tasten bzw. zu wenig Platz am fertigen Gerät gibt.
(zB. Tasteneingabe 171223)

do
if A = 171223 then gosub 171223
if A = 182312 then gosub 182312
loop
End

sub 171223
Locate 1 , 1
Lcd "Test1"
Return
End sub

Sub 182312
Locate 1 , 1
Lcd "Test2"
Return
End sub


Das Abfragen und Weiterverarbeiten einzelner Tasten ( Taste 1, Taste 2, oder Taste #)
mit „if then“ oder „ select case“ funktioniert.
Zahlengruppen wurden beim C-Control mit den Funktionen „Get_Value“ und“ Get_Key“
abgefragt und weiter verarbeitet. Ich habe versucht beide Funktionen als SUB anzupassen. Leider ist mir das nicht gelungen.
Welche Möglichkeit habe ich mit Bascom Basic ?
Viele Grüße
Frank
 
Hallo Frank,

herzlich willkommen im Forum :flowers:

Tastaturabfragen werden über einen Analog-Port gemacht. Der C-Control bietet dafür in Basic++ sehr schöne Beispiele und fertig ladbare Routinen. Deshalb musste ich mich bisher nicht sehr intensiv mit diesem Problem beschäftigen.
...
Ich möchte an einem „Mega 328P - 20 Mhz“ eine Tastatur ebenfalls am Analogport betreiben. Diese ist noch vom C-Control vorhanden. Eine Matrixtastatur scheidet aus, weil ich einen Quarz zwischen Port PB6 und PB7 einbauen möchte. Beim Lesen der Literatur habe ich es so verstanden, dass beim Verwenden der Matrixtastatur der Quarz keinen Platz hat. Ist doch richtig?
Die Tastatur wird dann wohl eine Widerstandskette sein, bei der über die Widerstände Tasten gelegt wurden. Dann kann man über die Messung des Widerstandes oder der anfallenden Spannung die Taste indirekt ermitteln.

Ich weiß jetzt nicht ob es das in Bascom als fertigen Befehl gibt. Kann man aber alles auch selber bauen.

Also eine Matrixtastatur kann man (wenn es so nicht paßt wie es soll) auch anders verdrahten und dann abfragen. Hier ist auch wieder die Sache ob es über einen Befehl möglich ist oder ob man es notfalls selber programmieren muß. Läßt sich aber auch bewerkstelligen.

Es gibt aber auch fertige Programmteile/Bibliotheken die zB eine Matrixtastatur mit bis zu 16 Tasten am I2C-Port bedienen können. Sie mal bei Cassio seinen Basteleien. Da ist was in der Art dabei.

Über die Tastatur soll ein 6 stelliger Code für jede Unterroutine oder das Einstellen der Uhrzeit eingegeben werden. Jede Taste mit einer Zahlenreihe zu definieren reicht nicht,
da es zu wenig Tasten bzw. zu wenig Platz am fertigen Gerät gibt.
(zB. Tasteneingabe 171223)

do
if A = 171223 then gosub 171223
if A = 182312 then gosub 182312
loop
End

sub 171223
Locate 1 , 1
Lcd "Test1"
Return
End sub

Sub 182312
Locate 1 , 1
Lcd "Test2"
Return
End sub


Das Abfragen und Weiterverarbeiten einzelner Tasten ( Taste 1, Taste 2, oder Taste #)
mit „if then“ oder „ select case“ funktioniert.
Zahlengruppen wurden beim C-Control mit den Funktionen „Get_Value“ und“ Get_Key“
abgefragt und weiter verarbeitet. Ich habe versucht beide Funktionen als SUB anzupassen. Leider ist mir das nicht gelungen.
Ob Bascom jetzt schon total fertige Blöcke wie „Get_Value“ und“ Get_Key“ hat, das wage ich mal zu bezweifeln. Man kann komplette Zeichenketten über die Serielle Schnittstelle einlesen. Das geht. Damit könnte man zB eine Eingabe vom PC empfangen. Man kann auch über eine Bibliothek eine PC-Tastatur abfragen und es gibt sogar eine kostenpflichtige Bibliothek mit der eine PC-Tastatur simuliert werden kann.

Was mir aber aufgefallen ist ... Unterprogramm-Namen die nur aus Zahlen bestehen. Gewöhn es dir ganz schnell ab sowas zu machen. Da können manche Programmiersprachen sehr allergisch drauf reagieren. Bei Namen von Unterprogrammen, Labeln, Variablen, ... IMMER mindestens das erste Zeichen als Buchstaben nehmen und KEINE Umlaute, Sonderzeichen oder anderen Schweinkram reinbauen. Sonst suchst du dir die Finger wund wenn es nicht so will wie gedacht.

Gruß
Dino
 
Hallo Dino03,
Vielen Dank für die Antwort.Mal sehen ob ich das hinbekomme. Bei der Arbeit mit dem Simulator habe ich bemerkt, daß die Tasten der Matrixtastatur oft nicht reagieren. Ich werde wohl nicht um Hardware zum testen herumkommen.
Schaun wir mal.
Viele Grüße
Frank
 
Hi Frank,

Bei der Arbeit mit dem Simulator habe ich bemerkt, daß die Tasten der Matrixtastatur oft nicht reagieren. Ich werde wohl nicht um Hardware zum testen herumkommen.

ich hab den Simulator noch nie wirklich verwendet. Ich teste immer an realer Hardware. Für Debug-Ausgaben hab ich dann meißt nen LCD, ein paar LEDs oder ne serielle Verbindung zum PC dran. Wichtig ist auch, den Programmablauf im Kopf durchzugehen. Also im Kopf zu simulieren. Die Blockschaltbilder in den Datenblättern sind auch sehr hilfreich um die internen Abläufe zu verstehen. Beim Simulator hast du die wirklichen zeitlichen Abläufe der externen Hardware nicht mit drin. Du könntest also eventuell einen Fehler suchen der in Wirklichkeit garnicht existiert. Aus dem Grund nehme ich den nicht.

Gruß
Dino
 
Hallo Dino03,
Danke. Genau das habe ich vermutet. Beim C Control gab es sowieso nur die Hardware zum Testen. Ich bin schon beim Zusammensuchen der Bauelemente.
Dabei halte ich mich erst mal an der Minimalkonfiguration aus einem Buch über Bascom Basic. Mit 16 X 4 LCD und Matrixtastatur.
LED`s und einiger Kleinkram ist vorhanden.
Als Programmer denke ich an den von Bascom USB/ISP.
Mit freundlichen Grüßen
Frank
 
Hallo Frank!

Willkommen im AVR-Praxis Forum! :ciao:

Auch wenn es dir vielleicht ein wenig schwer fällt, aber du solltest dich erst mal von den "alten" Programmiergewohnheiten der C-Controll frei machen.
Es erleichtert dir das "lernen" von AVR und BASCOM um einiges. :wink:


Vielleicht solltest du auch tatsächlich mal einen Blick auf den TWI/I2C-Bus werfen.
Auf diese Weise könntest du eine (oder mehrere) Matrixtastaturen und mehrere LCD`s betreiben.

Solltest du dazu fragen haben gib es hier einige Beispiele und User, die dir dabei helfen können. :)
Du kannst dir ja schon mal DIESEN BEITRAG (Matrix und LCD) und DIESEN BEITRAG (GLCD als CLCD) dazu ansehen.


Grüße,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)