- 3D-Druck Einstieg und Tipps         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Tastenabfrage und Text auslesen am RN-Mega8 und LCD

  1. #11
    Benutzer Stammmitglied
    Registriert seit
    08.11.2006
    Ort
    Wendeburg
    Alter
    36
    Beiträge
    96
    Anzeige

    Powerstation Test
    hallo!

    Ich habe zur Zeit dieses Programm auf dem Chip:

    Code:
    Declare Sub Taste1()
    Declare Sub Taste2()
    Declare Function Tastenabfrage() As Byte
    Declare Sub Taste3()
    Declare Sub Taste5()
    Declare Sub Taste6()
    Declare Sub Willkommen()
    
    $regfile = "m8def.dat"
    
    
    
    Dim Ws As Word
    Dim Adc_ohne_taste As Word
    
    
    $crystal = 16000000
    
    
    $baud = 9600
    
    
    Config Adc = Single , Prescaler = Auto
     Config Pinc.0 = Input
    Portc.0 = 1
    
    
    Start Adc
    
    
    
    Dim Taste As Byte
    
    
    
    Config Pind.6 = Output
    Portd.6 = 0
    
    
    
    
    Dim ___lcdno As Bit
    Config Lcdpin = Pin , E = Portc.3 , Rs = Portc.2 , Db4 = Portd.2 , Db5 = Portd.3 , Db6 = Portd.4 , Db7 = Portd.5
    Config Lcd = 16 * 4
    
    
    
    
    
    Adc_ohne_taste = Getadc(0)
    
    
    
    
    
    Call Willkommen
    
    
    
    
    Do
    
       Taste = Tastenabfrage()
    
    
       If Taste <> 0 Then
    
          Select Case Taste
             Case 1
                 Call Taste1
              Case 2
                 Call Taste2
    
             Case 3
                Call Taste3
    
    
    
    
    
    
    
         End Select
    
       End If
    
    
    Loop
    
    End
    
    
    
    
    Function Tastenabfrage() As Byte
       Tastenabfrage = 0
    
       Ws = Getadc(0)
       If Ws < Adc_ohne_taste Then
          Select Case Ws
             Case 330 To 370
                Tastenabfrage = 1
    
             Case 260 To 300
                Tastenabfrage = 2
    
             Case 100 To 130
                Tastenabfrage = 3
    
    
          End Select
    
       End If
    
    End Function
    
    
    
    
    Sub Taste1()
    Sound Portb.0 , 500 , 300
    
    
       Lcd "1"
    
    
    End Sub
    
    
    Sub Taste2()
    Sound Portb.0 , 500 , 300
    
     Initlcd
     Lcd "2"
    End Sub
    
    
    Sub Taste3()
    Sound Portb.0 , 600 , 400
    
    Initlcd
    Lcd "3"
    
    End Sub
    
    
    
    
    
    Sub Taste5()
    ___lcdno = 0
    Initlcd
    Cursor Off
    Cls
    Home
    Lcd "Taste5"
    End Sub
    
    Sub Willkommen()
    ___lcdno = 0
    Initlcd
    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Zahl eingeben:"
    Lowerline
    Cursor Blink
    End Sub
    
    Sub Taste6()
    
    Initlcd
    Cursor Off
    Cls
    Locate 1 , 1
    Lcd "Taste6"
    End Sub
    Nun steht in der ersten Zeile auf dem LCD "Zahl eingeben" dann wird der blinkende Cursor in die Zeile darunter gesetzt.
    Wenn ich jetzt die Taster 1-3 drücke klappt ja alles bis auf das, dass er nach x belibiegen eingegebenen Zeichen aus der oberen einen Teil der Zeichen löscht und in eine andere Zeile setzt.

    Was ich möchte ist, dass ich erstmal mit den Tastern eine durchgehende,fortlaufende Zahlenreihe eingeben kann.

    Gibt es da einen best. Befehl?
    was ist daran falsch?

    mfg
    Timo

    Danke

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Beiträge
    2.731
    Hallo,
    Du machst ziemlich oft Initlcd, reicht das nicht einmal am Anfang ?
    Da wird doch immer das LCD zurückgesetzt, und vergisst was es bis jetzt angezeigt hat

  3. #13
    Benutzer Stammmitglied
    Registriert seit
    08.11.2006
    Ort
    Wendeburg
    Alter
    36
    Beiträge
    96
    hi!

    Wenn ich das initlcd und das ___lcdno=0 an den Anfang schreibe, dann sind nach einem Tastendruck auf dem ganzen LCD nur 2en z.B zu sehen.

    Wenn ich es in die Sub's mit reinschreibe, dann löscht er Teilstücke des Textes.

    Wo würdest du es genau reinschreiben?

    Timo

  4. #14
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    40
    Beiträge
    685
    @ timo1105

    Vielleicht hilft dir das hier:
    https://www.roboternetz.de/phpBB2/ze...light=tastatur

    Das Prinzip ist das selbe, in diesem Fall ist es eben eine Tastatur. Dies kann aber auch ein Taster, Schalter o.ä. sein

    Gruß
    Stefan

  5. #15
    Benutzer Stammmitglied
    Registriert seit
    08.11.2006
    Ort
    Wendeburg
    Alter
    36
    Beiträge
    96
    hi

    dankeschön für den tip! schau ich mir morgen genauer an, wenn ich zeit habe.

    Beim ersten überflug über dein Programm ist mir aufgefallen, das die Werte "case 400 to 440" bei dir fehlen?! Also die Werte die beim ADC ankommen,entstanden durch die versch. Widerstände.

    Was bedeutet erst,zweit, drittbelegung?

    heißt das, dass z.B die Taste 1 mehrere belegungen hat wenn man sie mehrmals drückt?


    Danke

    Timo

  6. #16
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.08.2005
    Alter
    40
    Beiträge
    685
    Wie im Thread geschrieben, speichere ich alle Werte am Anfang und kann mit einer best. Taste oder Schalter einfach die print-Befehle ändern.

    Sicher kann man das Programm noch erheblich verbessern und komprimieren, für den Anfang aber funktionierts

    Gruß
    Stefan

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

LiFePO4 Speicher Test