-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Alias beim Keyboard definieren. Hilfe!

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360

    Alias beim Keyboard definieren. Hilfe!

    Anzeige

    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:
    Code:
    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?????

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277

    Re: Alias beim Keyboard definieren. Hilfe!

    Zitat Zitat von EDatabaseError
    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

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    Und wasa ist der Key wet für funf unf für vier das steht nirgentwo.

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Zitat Zitat von EDatabaseError
    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)

    Code:
    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

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    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.

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Zitat Zitat von EDatabaseError
    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

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    gut werde ich.

    Aber wenns garnimmer geht hab ich schon mal abhilfe:

    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
    Nur noch die ' entfernen dann ist das ein perfekter auswerter. Der einzige Nachtiel ist eben der verbratene Flash.

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    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

  9. #9
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    16.06.2005
    Ort
    Göppingen
    Beiträge
    360
    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.

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    22.12.2004
    Alter
    64
    Beiträge
    277
    Zitat Zitat von EDatabaseError
    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:
    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
    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

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •