- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: Tastatur einbinden und Werte hochzählen

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    39
    Beiträge
    685

    Tastatur einbinden und Werte hochzählen

    Anzeige

    Powerstation Test
    Hallo,

    habe jetzt schon die ganze Zeit gesucht, aber nichts gescheites gefunden.

    1. Frage:
    Wie kann ich Buchstaben, Zahlen und Zeichen in den Atmel einlesen (werden best. als ascii Zeichen erkannt)?
    Unter Hilfe in Bascom steht noch was von Pins für die Tastatur, ich meine aber die Tastatur vom Computer [Serieller Anschluss (RXD und TXD) sind mit PC verbunden]

    Code:
    $regfile = "m32def.dat"
     ' $framesize = 32
      '$swstack = 32
      '$hwstack = 32
    $crystal = 16000000
    $baud = 9600
    
    
    '----------LED------------------
    Config Porta = Output
    
    
    Enable Interrupts
    
    
    Dim Key As Byte
    
    Do
    
    Print "Test"
    Wait 3
    
           Key = Getatkbd()
        If Key = 49 Then
           Print "1.Led "
           Porta.0 = 1
           Porta.1 = 0
           Porta.2 = 0
           Porta.3 = 0
           Porta.4 = 0
           Porta.5 = 0
           Porta.6 = 0
        End If
        If Key = 50 Then
           Print "2.Led "
           Porta.0 = 0
           Porta.1 = 1
           Porta.2 = 0
           Porta.3 = 0
           Porta.4 = 0
           Porta.5 = 0
           Porta.6 = 0
        End If
         If Key = 51 Then
           Print "3.Led "
           Porta.0 = 0
           Porta.1 = 0
           Porta.2 = 1
           Porta.3 = 0
           Porta.4 = 0
           Porta.5 = 0
           Porta.6 = 0
        End If
         If Key = 52 Then
           Print "4.Led "
           Porta.0 = 0
           Porta.1 = 0
           Porta.2 = 0
           Porta.3 = 1
           Porta.4 = 0
           Porta.5 = 0
           Porta.6 = 0
        End If
         If Key = 53 Then
           Print "5.Led "
           Porta.0 = 0
           Porta.1 = 0
           Porta.2 = 0
           Porta.3 = 0
           Porta.4 = 1
           Porta.5 = 0
           Porta.6 = 0
        End If
         If Key = 54 Then
           Print "6.Led "
           Porta.0 = 0
           Porta.1 = 0
           Porta.2 = 0
           Porta.3 = 0
           Porta.4 = 0
           Porta.5 = 1
           Porta.6 = 0
        End If
         If Key = 55 Then
           Print "7.Led "
           Porta.0 = 0
           Porta.1 = 0
           Porta.2 = 0
           Porta.3 = 0
           Porta.4 = 0
           Porta.5 = 0
           Porta.6 = 1
        End If
    
    Loop
    End
    
    Keydata:
    'normal keys lower case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , &H5E , 0
    Data 0 , 0 , 0 , 0 , 0 , 113 , 49 , 0 , 0 , 0 , 122 , 115 , 97 , 119 , 50 , 0
    Data 0 , 99 , 120 , 100 , 101 , 52 , 51 , 0 , 0 , 32 , 118 , 102 , 116 , 114 , 53 , 0
    Data 0 , 110 , 98 , 104 , 103 , 121 , 54 , 7 , 8 , 44 , 109 , 106 , 117 , 55 , 56 , 0
    Data 0 , 44 , 107 , 105 , 111 , 48 , 57 , 0 , 0 , 46 , 45 , 108 , 48 , 112 , 43 , 0
    Data 0 , 0 , 0 , 0 , 0 , 92 , 0 , 0 , 0 , 0 , 13 , 0 , 0 , 92 , 0 , 0
    Data 0 , 60 , 0 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    
    'shifted keys UPPER case
    Data 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0
    Data 0 , 0 , 0 , 0 , 0 , 81 , 33 , 0 , 0 , 0 , 90 , 83 , 65 , 87 , 34 , 0
    Data 0 , 67 , 88 , 68 , 69 , 0 , 35 , 0 , 0 , 32 , 86 , 70 , 84 , 82 , 37 , 0
    Data 0 , 78 , 66 , 72 , 71 , 89 , 38 , 0 , 0 , 76 , 77 , 74 , 85 , 47 , 40 , 0
    Data 0 , 59 , 75 , 73 , 79 , 61 , 41 , 0 , 0 , 58 , 95 , 76 , 48 , 80 , 63 , 0
    Data 0 , 0 , 0 , 0 , 0 , 96 , 0 , 0 , 0 , 0 , 13 , 94 , 0 , 42 , 0 , 0
    Data 0 , 62 , 0 , 0 , 0 , 8 , 0 , 0 , 49 , 0 , 52 , 55 , 0 , 0 , 0 , 0
    Data 48 , 44 , 50 , 53 , 54 , 56 , 0 , 0 , 0 , 43 , 51 , 45 , 42 , 57 , 0 , 0
    2.Frage:

    Wie kann ich ein Eingangssignal hochzählen (ähnlich C = i+1).
    Will zB. ein Taster einmal drücken und etwas ausführen und beim 2.mal drücken den nächsten Befehl abarbeiten lassen.

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Im Code fehlt eine entscheidene Zeile! CONFIG KEYBOARD = PINX.y , DATA = PINX.y , KEYDATA = table

    In der Hilfe findest du auch weitere Angaben zu Config Keyboard. Wenn die nicht reichen, kannst du ja nach Config Keyboard im Forum suchen oder fragen.

    Zu 2.:
    Mit INCR wir eine Variable um 1 erhöt. Ist es das was du gesucht hast?
    INCR C z.B. Dann kannst du ja abfragen, welchen Wert C hat und das Programm dementsprechend verzweigen.

    If C = 100 Then C = 0
    Select Case C
    Case 0 : Gosub 0
    Case 1 : Gosub 1
    Case 2 : Gosub 2
    ...
    End Select

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    39
    Beiträge
    685
    Hallo Marco78,

    dass mit der Zeile meinte ich mit den Pins, aber ich habe den Controller doch nur über die RXD und TXD Pins indirekt mit der Tastatur verbunden, sollte ich diese dann als Input bzw. Output setzen?

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Was meinst du mit indirekt? Die Pins für Rx und Tx haben ja auch ihre Funktionen als Ein- und Ausgänge.
    Du kannst die Tastatur im Prinzip anklemmen wo du willst. Du musst nur in der Configzeile die richtigen Pins angeben. Den Rest erledigt Bascom für dich.

    In der Hilfe zu Config Keyboard siehst du ja auch den Schaltplan. Und da steht ja auch, das es jeder Pin sein kann und das selbst für Clock kein externen INT gebraucht wird.

    Das Anschluß am INT bezieht sich auf die AppNote von Atmel. Ich denke mal das es in Assembler mit einem Interrupt leichter zu programmieren geht und deshalb dort so gezeigt wird.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    39
    Beiträge
    685
    Irgendwie stehe ich auf dem Schlauch, die Tastatur ist eine PS2 Tastatur an dem Rechner, mit dem ich programmiere.

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    ***Doppelpost***

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ne, das geht nicht. Dann musst du die Zeichen über RS232 zum AVR schicken. Da brauchst du dann wirklich Rx und Tx.
    Aber am PC brauchst du ne Software die die Zeichen sendet. Dann brauchst du die Data-Tabelle auch nicht mehr.
    Als Software gibt es Terminalprogramme. Aber ich weiss ja auch nicht, wann ein Zeichen gesendet werden soll/muss.

    Im Code brauchst du dann Befehle wie BAUD, INPUT oder ähnliche. Je nach Anwendungsfall.

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    39
    Beiträge
    685
    Ah ,danke.
    Dann werde ich mich erstmal ans Zählen machen

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    so wie ich gelesen habe, kannst du nur an den pc die scancode senden und mit dem AVR eine tastatur simulieren aber nicht umgedreht (eine tastatur an den AVR schliessen). und die mouse kannst du auch nur zum pc simulieren und nicht zum avr.
    mfg pebisoft

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Das stimmt. Man kann mit einem AVR am PC Maus und Keyboard simulieren. Aber der AVR kann auch eine AT- oder PS/2-Tastatur auslesen.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Labornetzteil AliExpress