PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alias beim Keyboard definieren. Hilfe!



EDatabaseError
13.07.2005, 09:32
](*,) 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:

Config Kbd = Portb
Key = Getkbd()

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...

Aber wie geht das?????

hrei
13.07.2005, 10:38
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...

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.

Grüße
Henrik

EDatabaseError
13.07.2005, 11:04
Und wasa ist der Key wet für funf unf für vier das steht nirgentwo.

hrei
13.07.2005, 11:45
Und wasa ist der Key wet für funf unf für vier das steht nirgentwo.

Das muss ja auch nirgendwo stehen :-)

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)



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
'-------------------------------------------------------------------------------


Grüße
Henrik

EDatabaseError
13.07.2005, 12:27
:( 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.

hrei
13.07.2005, 13:53
:( Bin neu was ist der I²C Bus hab ich schon mal gehört was muss ich dann anders machen?

Vieles :-). Der Programmauschnitt sollte nur verdeutlichen, wie Du die von der Tastatur emfangenen Werte den von Dir gewünschten Werten zuordnen kannst.
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.


Aber das Programm sieht gut aus werds gleich mal probieren.

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.

Grüße
Henrik

EDatabaseError
13.07.2005, 17:39
gut werde ich.

Aber wenns garnimmer geht hab ich schon mal abhilfe:


'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

Nur noch die ' entfernen dann ist das ein perfekter auswerter. Der einzige Nachtiel ist eben der verbratene Flash.

hrei
13.07.2005, 18:30
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

EDatabaseError
14.07.2005, 13:01
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.

hrei
14.07.2005, 15:15
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.

Dann probiere doch mal folgendes:


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


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.

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

EDatabaseError
14.07.2005, 15:32
Ich kann ja Englisch... aber noch nicht das also in der Schule sagt man:
Stage 5 1800 headwords dazu. Und da ist das ganze fachgesimple nicht mit drin wenn man bedenkt das es im englischen weit über 10000 wörter gibt und zwar weit mehr.

Also das ganze funkt mit dem Simukeyboard aber wenn ich versuche die Pins auf dem Port zu ein und auszuschalten wie es das Keyboard dann tut bekomme ich immer den gleichn wert. Warum???

PicNick
14.07.2005, 15:43
Vorsicht, Männer. Laut Help gibt getkbd() den wert 16 zurück, wenn nix gedrückt ist (bei 4x4)

hrei
14.07.2005, 15:55
Also das ganze funkt mit dem Simukeyboard aber wenn ich versuche die Pins auf dem Port zu ein und auszuschalten wie es das Keyboard dann tut bekomme ich immer den gleichn wert. Warum???

Warum? Weil Du etwas falsch angeschlossen hast. Was? Woher sollen wir das wissen?

So --- das ist jetzt der Moment wo ich mich ausklinke. Bitte fange mal mit den Grundlagen an, bringe ein Paar LEDs zum leuchten, eigne Dir die wenigen notwendigen Fachbegriffe an, kauf Dir einen Dictionary und vor allem: Gewöhne Dich an systematisches arbeiten.

Henrik

EDatabaseError
14.07.2005, 15:55
soviel hab ich in der Hilfe auch verstanden...

Bei mir wird aber 15 u. 7 ausgegeben??!?

EDatabaseError
14.07.2005, 15:58
Also das ganze funkt mit dem Simukeyboard aber wenn ich versuche die Pins auf dem Port zu ein und auszuschalten wie es das Keyboard dann tut bekomme ich immer den gleichn wert. Warum???

Warum? Weil Du etwas falsch angeschlossen hast. Was? Woher sollen wir das wissen?

So --- das ist jetzt der Moment wo ich mich ausklinke. Bitte fange mal mit den Grundlagen an, bringe ein Paar LEDs zum leuchten, eigne Dir die wenigen notwendigen Fachbegriffe an, kauf Dir einen Dictionary und vor allem: Gewöhne Dich an systematisches arbeiten.

Henrik

ich habe gar nix angeschlossen ich arbeite nur mit dem Simulator. Macht das einen unterschied???
Bringe ein Paar led zum leuchten also wer das nicht kann... z.b. Pinb.0 = 1... das ist ja wohl sehr schwer.

bad-joker
14.07.2005, 18:59
Für die Übersetztungen technischer Begriffe aus und ins Englische eignet sich www.leo.org besonders gut.
Gruss
Thomas