timo1105
17.06.2007, 13:49
Hallo,
Ich beschäftige mich gerade damit, ein Programm zu schreiben, welches einen Schrittmotor bewegen kann.
Dieses Programm besteht daraus, dass auf einem LCD erst ein Begrüßungsbildschirm zu sehen ist, dann eine Erklärungen, was der Benutzer alles eingeben kann und dann sollte sich der Schrittmotor je nach Eingabe drehen.
Möglich sind bis jetzt nur die Zahlen 1 und 2, da ich nur 2 Taster angeschlossen habe. Dazu kommt noch ein dritter, der als Bestätigungstaster dient.
Meine Frage ist nun:
Der Benutzer hat die Möglichkeit 1,2,11,12,21,22 einzugeben. Wie kann ich nun z.B in eine Variable speichern, wie oft pind.0(taster1) oder pind.1(taster2) gedrückt wurde.
Die Variable taucht später in der passenden For/next schleife auf, die dann den Moter 1 oder 2 oder 11 oder 12 oder 21 oder 22 dreht.
Wie muss ich das umsetzen? Ich komm irgendwie nicht mehr weiter...
Hier mein bisheriger code:
$regfile = "m8def.dat"
$crystal = 16000000
Declare Sub Sub1
Declare Sub Sub2
Declare Sub Enter
Declare Sub Startlcd
Declare Sub Erklaerung
Declare Sub Eingabe
Declare Sub Warnung
Dim Lcdxpos As Byte
Config Lcdpin = Pin , E = Portb.4 , Rs = Portb.3 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 4
Config Lcdbus = 4
Ddrd = &B11110000
Portd = &B00100111
Label1:
Cls
Call Startlcd
Lcdxpos = 0
Do
Debounce Pind.0 , 0 , Sub1 , Sub
Debounce Pind.1 , 0 , Sub2 , Sub
Debounce Pind.2 , 0 , Enter , Sub
If Lcdxpos > 2 Then
Gosub Warnung
End If
Loop
Sub Startlcd
Cls
Locate 1 , 1
Lcd "Willkommen bei:"
Locate 3 , 1
Lcd "*One-Two-Motion*"
Cursor Off
Wait 2
Cls
Gosub Erklaerung
End Sub
Sub Sub1
Incr Lcdxpos
Locate 3 , Lcdxpos
Lcd "1"
End Sub
Sub Sub2
Incr Lcdxpos
Locate 3 , Lcdxpos
Lcd "2"
End Sub
Sub Enter
End Sub
Sub Erklaerung
Cls
Locate 1 , 1
Lcd "Erklaerung:"
Locate 2 , 1
Lcd "Taster1 = 1"
Locate 3 , 1
Lcd "Taster2 = 2"
Locate 4 , 1
Lcd "Bestaetigen = B"
Cursor Off
Wait 4
Cls
Locate 1 , 1
Lcd "Das kannst du"
Locate 2 , 1
Lcd "eingeben:"
Locate 3 , 1
Lcd "1,11,12,2,21,22"
Wait 5
Cls
Call Eingabe
End Sub
Sub Eingabe
Locate 1 , 1
Lcd "Wie viele Umdr.?"
Locate 3 , 1
Cursor Blink
End Sub
Sub Warnung
Cls
Locate 2 , 1
Lcd "!!!Eingabe nicht"
Locate 3 , 1
Lcd "moeglich!!!"
Wait 1
Cls
Goto Label1
End Sub
Vielen Dank
Timo
Ich beschäftige mich gerade damit, ein Programm zu schreiben, welches einen Schrittmotor bewegen kann.
Dieses Programm besteht daraus, dass auf einem LCD erst ein Begrüßungsbildschirm zu sehen ist, dann eine Erklärungen, was der Benutzer alles eingeben kann und dann sollte sich der Schrittmotor je nach Eingabe drehen.
Möglich sind bis jetzt nur die Zahlen 1 und 2, da ich nur 2 Taster angeschlossen habe. Dazu kommt noch ein dritter, der als Bestätigungstaster dient.
Meine Frage ist nun:
Der Benutzer hat die Möglichkeit 1,2,11,12,21,22 einzugeben. Wie kann ich nun z.B in eine Variable speichern, wie oft pind.0(taster1) oder pind.1(taster2) gedrückt wurde.
Die Variable taucht später in der passenden For/next schleife auf, die dann den Moter 1 oder 2 oder 11 oder 12 oder 21 oder 22 dreht.
Wie muss ich das umsetzen? Ich komm irgendwie nicht mehr weiter...
Hier mein bisheriger code:
$regfile = "m8def.dat"
$crystal = 16000000
Declare Sub Sub1
Declare Sub Sub2
Declare Sub Enter
Declare Sub Startlcd
Declare Sub Erklaerung
Declare Sub Eingabe
Declare Sub Warnung
Dim Lcdxpos As Byte
Config Lcdpin = Pin , E = Portb.4 , Rs = Portb.3 , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 4
Config Lcdbus = 4
Ddrd = &B11110000
Portd = &B00100111
Label1:
Cls
Call Startlcd
Lcdxpos = 0
Do
Debounce Pind.0 , 0 , Sub1 , Sub
Debounce Pind.1 , 0 , Sub2 , Sub
Debounce Pind.2 , 0 , Enter , Sub
If Lcdxpos > 2 Then
Gosub Warnung
End If
Loop
Sub Startlcd
Cls
Locate 1 , 1
Lcd "Willkommen bei:"
Locate 3 , 1
Lcd "*One-Two-Motion*"
Cursor Off
Wait 2
Cls
Gosub Erklaerung
End Sub
Sub Sub1
Incr Lcdxpos
Locate 3 , Lcdxpos
Lcd "1"
End Sub
Sub Sub2
Incr Lcdxpos
Locate 3 , Lcdxpos
Lcd "2"
End Sub
Sub Enter
End Sub
Sub Erklaerung
Cls
Locate 1 , 1
Lcd "Erklaerung:"
Locate 2 , 1
Lcd "Taster1 = 1"
Locate 3 , 1
Lcd "Taster2 = 2"
Locate 4 , 1
Lcd "Bestaetigen = B"
Cursor Off
Wait 4
Cls
Locate 1 , 1
Lcd "Das kannst du"
Locate 2 , 1
Lcd "eingeben:"
Locate 3 , 1
Lcd "1,11,12,2,21,22"
Wait 5
Cls
Call Eingabe
End Sub
Sub Eingabe
Locate 1 , 1
Lcd "Wie viele Umdr.?"
Locate 3 , 1
Cursor Blink
End Sub
Sub Warnung
Cls
Locate 2 , 1
Lcd "!!!Eingabe nicht"
Locate 3 , 1
Lcd "moeglich!!!"
Wait 1
Cls
Goto Label1
End Sub
Vielen Dank
Timo