Schau in der Hilfe nach LOOKUP. Damit kannst Du den Key-Werten mittels einer Tabelle die von Dir gewünschten Werte zuordnen.Zitat von EDatabaseError
Grüße
Henrik
Kann mir bitte die bei den Aliasen bei einem 3x4 Keyboard helfen. Ich dreh durch die Hilfe sagt mir nur eins - Bahnhof.
So siehts aus:
Die Variable Key liefert nur wirre Werte wie 16... Keine Ahnung was das soll. Ich will halt das bei Push 1 die Var. Key 1 enthält...Code:Config Kbd = Portb Key = Getkbd()
Aber wie geht das?????
Schau in der Hilfe nach LOOKUP. Damit kannst Du den Key-Werten mittels einer Tabelle die von Dir gewünschten Werte zuordnen.Zitat von EDatabaseError
Grüße
Henrik
Und wasa ist der Key wet für funf unf für vier das steht nirgentwo.
Das muss ja auch nirgendwo stehenZitat von EDatabaseError
1) Schreibe Dir ein Testprogramm, das nur den Wert für die gedrückte Taste anzeigt.
2) Lege ein Stück Papier bereit.
3) Nimm ein Schreibgerät zur Hand.
4) Starte das Programm und schreibe die gelieferten Werte für jede Tastenposition auf.
5) Bastle nach diesen Erkenntnissen eine Tabelle.
Für eine 4x4 Matrix sieht das bei mir dann so z.B. aus:
(Allerdings für eine Tastatur am I2C Bus)
GrüßeCode:Function Matrix_key() As Byte !rcall _Key_init !rcall _Key_Scan Temp = _key_scan If Temp > 0 Then Temp = Temp - 1 Matrix_key = Lookup(temp , Matrix_data) Call Beep_confirm 'BEEP Else Matrix_key = 255 'Taste = Matrix_key End If End Function '------------------------------------------------------------------------------- Matrix_data: 'Zuordnungstabelle für Matrixtast. Data 32 , 33 , 14 , 15 , 3 , 6 , 10 , 9 , 2 , 5 , 0 , 8 , 1 , 4 , 12 , 7 ' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 '-------------------------------------------------------------------------------
Henrik
Bin neu was ist der I²C Bus hab ich schon mal gehört was muss ich dann anders machen?
Aber das Programm sieht gut aus werds gleich mal probieren.
Vieles . Der Programmauschnitt sollte nur verdeutlichen, wie Du die von der Tastatur emfangenen Werte den von Dir gewünschten Werten zuordnen kannst.Zitat von EDatabaseError
I2C ist ein Kapitel für sich (ist ausführlich in der Hilfe erläutert) und Du bräuchtest zumindest einen PCF8574 (Porterweiterung), an den die Tastatur angeschlossen wird.
Das wird dir unmodifiziert nix nützen. Bitte mache Dich erstmal mit der Vorgehensweise bei LOOKUP vertraut und befolge die von mir o.g. Schritte.Aber das Programm sieht gut aus werds gleich mal probieren.
Grüße
Henrik
gut werde ich.
Aber wenns garnimmer geht hab ich schon mal abhilfe:
Nur noch die ' entfernen dann ist das ein perfekter auswerter. Der einzige Nachtiel ist eben der verbratene Flash.Code:'Sub Tastatur() ' If Pinb.0 = 1 Then ' If Pinb.4 = 1 Then ' Akttaste = 1 '1 ' End If ' If Pinb.5 = 1 Then ' Akttaste = 4 '4 ' End If ' If Pinb.6 = 1 Then ' Akttaste = 7 '7 ' End If ' If Pinb.7 = 1 Then ' Akttaste = 11 '* ' End If ' Else ' If Pinb.1 = 1 Then ' If Pinb.4 = 1 Then ' Akttaste = 2 '2 ' End If ' If Pinb.5 = 1 Then ' Akttaste = 5 '5 ' End If ' If Pinb.6 = 1 Then ' Akttaste = 8 '8 ' End If ' If Pinb.7 = 1 Then ' Akttaste = 0 '0 ' End If ' Else ' If Pinb.2 = 1 Then ' If Pinb.4 = 1 Then ' Akttaste = 3 '3 ' End If ' If Pinb.5 = 1 Then ' Akttaste = 6 '6 ' End If ' If Pinb.6 = 1 Then ' Akttaste = 9 '9 ' End If ' If Pinb.7 = 1 Then ' Akttaste = 12 '# ' End If ' Else ' If Pinb.3 = 1 Then ' If Pinb.4 = 1 Then ' Akttaste = 21 'A / leer ' End If ' If Pinb.5 = 1 Then ' Akttaste = 22 'B / Abbruch ' End If ' If Pinb.6 = 1 Then ' Akttaste = 23 'C / Korrektur ' End If ' If Pinb.7 = 1 Then ' Akttaste = 24 'D / Bestätigen ' End If ' Else ' Akttaste = 99 'nichts gedrückt ' End If ' End If ' End If ' End If 'End Sub
Oh mann,
klar. so geht das auch....
Wenn Du dann am Ende des Speichers angelangt bist, schreie aber bitte nicht nach einem 'größeren' µC, sondern beschäftige Dich langsam mal ernsthaft damit, Dich mit grundlegenden Programmiertechniken vertraut zu machen und die Hilfetexte und die Dir gegebenen Antworten sorgfältig zu lesen.
So gehts (auf Dauer) nicht.
Henrik
Ich hab ja gesagt wegen dem Speicher mach ich es nicht so und ich weiß es gibt eine andere Lösung aber: DIE HILFE GIBT ES NICHT IN DEUTSCH! Und wenn man sowas übersetzt dann kommt Käse raus.
Ahh... so. da liegt der Hase im Pfeffer.Zitat von EDatabaseError
Dann probiere doch mal folgendes:
Das habe ich selbst nun nicht ausprobiert, es sollt aber funktionieren und Du kannst anhand der Printausgaben überprüfen was die getkbd() Funktion zurückgibt und welcher Wert der Tabelle in Taste übernommen wird.Code:Dim N as Byte Dim Taste as Byte CONFIG KBD = PORTx , DEBOUNCE = 40 loop: N = getkbd() If N > 0 Then N = N - 1 Taste = Lookup(N , Matrix_data) Else Taste = 255 End If Print N Print Taste goto loop end '------------------------------------------------------------------------------- Matrix_data: 'Zuordnungstabelle für Matrixtast. Data 32 , 33 , 14 , 15 , 3 , 6 , 10 , 9 , 2 , 5 , 0 , 8 , 1 , 4 , 12 , 7 ' 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Debounce (Entprellen) ist mit 40 sicherheitshalber höher angesetzt als der Default (Ausgangswert). Für Portx musst Du natürlich den von Dir benutzten Port einsetzen.
Bitte jetzt nicht falsch verstehen, aber so ganz ohne Englisch wird das Leben in der Elektronikwelt verdammt schwer. Alle relevanten Datenblatter sind ja auf Englisch abgefasst und selbst die normalerweise gegenüber anderen Sprachen ausgesprochen reserviert eingestellten Franzosen müssen, wenn sie in der Elektronik bestehen wollen, in den sauren Apfel beißen und zumindest Einfachstenglisch lernen.
Für die AVRs und Bascom gibt es zwar Bücher auf Deutsch, so richtig empfehlen kann ich da aber keines.
Viel Glück
Henrik
Lesezeichen