Roboter n00b
12.02.2006, 14:38
Hallo
Ich habe zZ ein kleines Problem. Ich bin gerade dabei, ein LCD Menü (mit Start, Sensortest, Spannung etc) zu Programmieren. Zur Zeit bin ich soweit, dass ich über die Analogen Tasten des RNC an Porta.7 einen Menüpunkt auswählen kann, und dieser dann Schwarz unterlegt wird.
Die Tastenabfrage funktioniert so (wie im RNC Manual)
Do
Dim Taste As Byte
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Lauflicht1 'Taste 1 Zeigt Bateriespannung über RS232 an
Case 2
Call Lauflicht2 'Taste 2 Motoren beschleunigen und abbremsen
Case 3
Call Batterie 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Case 4
Call Lauflicht4 'Zeigt Messwerte an allen Port A PIN´s
Case 5
Call Lauflicht5 'Zeigt digitalen I/O Zustand von PA0 bis PA5 an
End Select
End If
Waitms 100
Loop
End
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1
Ton = 550
Case 340 To 380
Tastenabfrage = 2
Ton = 500
Case 265 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 100 To 130
Tastenabfrage = 5
Ton = 350
End Select
'BEEP
End If
End Function
Wenn nun Tastenabfrage = 3 ist, kommt er zu Spannungsmessung, welche dann schwarz unterlegt wird:
Sub Batterie()
Cls
Locate 1 , 7
Lcd "M E N U"
Locate 2 , 8
Lcd "Start"
Locate 3 , 6
Lcd "Sensortest"
Locate 4 , 1
Lcd Chr(1)
Lcd " Batteriespannung " ; Chr(1)
dies funkt auch noch ganz gut. Nun will ich aber noch eine Tastenabfrage in diesem Subprogramm "Batterie" einführen, welcher beim Druck der gleichen Taste das Programm "Batteriespannung" startet, dh:
Taste 3: Markieren "Batteriespannung"
Erneut Taste 3: Ausführen Programm "Batteriespannung"
(Beim druck einer anderen Taste sollte wieder das normale hauptmenu angezeigt werden.
so, nun weiss ich aber nicht, wie ich das Programmieren muss. ich hoffe, jemand kann mir da etwas helfen :D
danke und gruss
Serge
Ich habe zZ ein kleines Problem. Ich bin gerade dabei, ein LCD Menü (mit Start, Sensortest, Spannung etc) zu Programmieren. Zur Zeit bin ich soweit, dass ich über die Analogen Tasten des RNC an Porta.7 einen Menüpunkt auswählen kann, und dieser dann Schwarz unterlegt wird.
Die Tastenabfrage funktioniert so (wie im RNC Manual)
Do
Dim Taste As Byte
Taste = Tastenabfrage()
If Taste <> 0 Then
Select Case Taste
Case 1
Call Lauflicht1 'Taste 1 Zeigt Bateriespannung über RS232 an
Case 2
Call Lauflicht2 'Taste 2 Motoren beschleunigen und abbremsen
Case 3
Call Batterie 'Einige male Lauflicht über LED´s anzeigen. Am I2C-Port darf in diesem Moment nichts angeschlossen sein
Case 4
Call Lauflicht4 'Zeigt Messwerte an allen Port A PIN´s
Case 5
Call Lauflicht5 'Zeigt digitalen I/O Zustand von PA0 bis PA5 an
End Select
End If
Waitms 100
Loop
End
'Diese Unterfunktion fragt die Tastatur am analogen Port ab
Function Tastenabfrage() As Byte
Local Ws As Word
Tastenabfrage = 0
Ton = 600
Start Adc
Ws = Getadc(7)
If Ws < 1010 Then
Select Case Ws
Case 410 To 450
Tastenabfrage = 1
Ton = 550
Case 340 To 380
Tastenabfrage = 2
Ton = 500
Case 265 To 305
Tastenabfrage = 3
Ton = 450
Case 180 To 220
Tastenabfrage = 4
Ton = 400
Case 100 To 130
Tastenabfrage = 5
Ton = 350
End Select
'BEEP
End If
End Function
Wenn nun Tastenabfrage = 3 ist, kommt er zu Spannungsmessung, welche dann schwarz unterlegt wird:
Sub Batterie()
Cls
Locate 1 , 7
Lcd "M E N U"
Locate 2 , 8
Lcd "Start"
Locate 3 , 6
Lcd "Sensortest"
Locate 4 , 1
Lcd Chr(1)
Lcd " Batteriespannung " ; Chr(1)
dies funkt auch noch ganz gut. Nun will ich aber noch eine Tastenabfrage in diesem Subprogramm "Batterie" einführen, welcher beim Druck der gleichen Taste das Programm "Batteriespannung" startet, dh:
Taste 3: Markieren "Batteriespannung"
Erneut Taste 3: Ausführen Programm "Batteriespannung"
(Beim druck einer anderen Taste sollte wieder das normale hauptmenu angezeigt werden.
so, nun weiss ich aber nicht, wie ich das Programmieren muss. ich hoffe, jemand kann mir da etwas helfen :D
danke und gruss
Serge