PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Tastenabfrage



Roboter n00b
12.02.2006, 13: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

x-ryder
13.02.2006, 13:31
Sub Batterie()
Cls

Locate 1 , 7
Lcd "M E N U"
Locate 2 , 8
Lcd "Start"
Locate 3 , 6
Lcd "Sensortest"
Locate 4 , 1
if taste1=1 then
Lcd Chr(1)
Lcd " Batteriespannung " ; Chr(1)
else
gosub menu
endif

so ahb ich das jetzt verstanden, iss das richtig, oder was wolltest du?