Blacksun91
25.09.2010, 16:58
Hallöle,
Ich versuche mich grad daran eine Navigation für ein LCD - Display zu programmieren. Mit dem Hauptnavigation hat das soweit geklappt und ich kann zwischen Menupunkten herumswitchen. Nun möchte ich, dass wenn ich einen Punkt anwähle und den Taster eines Drehencoder drücke ich in eine weitere Navigation komme. Dabei möchte ich aber den Taster nicht permanent gedrückt halten um in diesem Menu zu bleiben. Leider hab ich keine Ahnung oder keine weitere Idee wie ich dies anstelle. Zurzeit sieht der Quellcode so aus:
$regfile = "m16def.dat"
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input
Dim Links_boolean As Byte
Dim Rechts_boolean As Byte
Dim Ec_wert As Byte
Dim Menu As Byte
Dim Untermenu As Byte
Links_boolean = 0
Rechts_boolean = 0
Ec_wert = 0
Menu = 0
Untermenuwert = 0
Declare Sub Untermenu
Initlcd
Cursor Off
Main:
Do
Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
Debounce Pinc.5 , 0 , Untermenu , Sub
If Links_boolean = 1 Then
Incr Menu
Links_boolean = 0
End If
If Rechts_boolean = 1 Then
Decr Menu
Rechts_boolean = 0
End If
If Menu > 7 Then Menu = 0
Select Case Menu
Case 0:
Cls
Locate 1 , 1
Lcd "Home"
Case 2:
Cls
Locate 1 , 1
Lcd "LED"
Case 4:
Cls
Locate 1 , 1
Lcd "Rolllaeden"
Case 6:
Cls
Locate 1 , 1
Lcd "Licht Haus"
End Select
Loop
Sub Untermenu:
Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
If Links_boolean = 1 Then
Incr Untermenu
Links_boolean = 0
End If
If Rechts_boolean = 1 Then
Decr Untermenu
Rechts_boolean = 0
End If
If Untermenu > 3 Then Untermenu = 0
If Menu = 0 Then
Select Case Untermenu
Case 0:
Cls
Locate 1 , 1
Lcd "Home Untermenu"
Case 2:
Cls
Locate 1 , 1
Lcd "Home Untermenu2"
End Select
End If
End Sub
Links:
Incr Links_boolean
Return
Rechts:
Incr Rechts_boolean
Return
End
Besonders bei dem Debouncen und der Subroutine bin ich mir noch unsicher wie das geht. Vielleicht könnt ihr mir ja helfen :)
Mfg Blacksun
Edit: Ich bin auch dankbar bei Tipps zur Quellcodeverkürzung oder Quellcodeumgestaltung
Ich versuche mich grad daran eine Navigation für ein LCD - Display zu programmieren. Mit dem Hauptnavigation hat das soweit geklappt und ich kann zwischen Menupunkten herumswitchen. Nun möchte ich, dass wenn ich einen Punkt anwähle und den Taster eines Drehencoder drücke ich in eine weitere Navigation komme. Dabei möchte ich aber den Taster nicht permanent gedrückt halten um in diesem Menu zu bleiben. Leider hab ich keine Ahnung oder keine weitere Idee wie ich dies anstelle. Zurzeit sieht der Quellcode so aus:
$regfile = "m16def.dat"
$crystal = 16000000
Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
Config Lcd = 16 * 2
Config Pinc.5 = Input
Config Pinc.6 = Input
Config Pinc.7 = Input
Dim Links_boolean As Byte
Dim Rechts_boolean As Byte
Dim Ec_wert As Byte
Dim Menu As Byte
Dim Untermenu As Byte
Links_boolean = 0
Rechts_boolean = 0
Ec_wert = 0
Menu = 0
Untermenuwert = 0
Declare Sub Untermenu
Initlcd
Cursor Off
Main:
Do
Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
Debounce Pinc.5 , 0 , Untermenu , Sub
If Links_boolean = 1 Then
Incr Menu
Links_boolean = 0
End If
If Rechts_boolean = 1 Then
Decr Menu
Rechts_boolean = 0
End If
If Menu > 7 Then Menu = 0
Select Case Menu
Case 0:
Cls
Locate 1 , 1
Lcd "Home"
Case 2:
Cls
Locate 1 , 1
Lcd "LED"
Case 4:
Cls
Locate 1 , 1
Lcd "Rolllaeden"
Case 6:
Cls
Locate 1 , 1
Lcd "Licht Haus"
End Select
Loop
Sub Untermenu:
Ec_wert = Encoder(pinc.6 , Pinc.7 , Links , Rechts , 1)
If Links_boolean = 1 Then
Incr Untermenu
Links_boolean = 0
End If
If Rechts_boolean = 1 Then
Decr Untermenu
Rechts_boolean = 0
End If
If Untermenu > 3 Then Untermenu = 0
If Menu = 0 Then
Select Case Untermenu
Case 0:
Cls
Locate 1 , 1
Lcd "Home Untermenu"
Case 2:
Cls
Locate 1 , 1
Lcd "Home Untermenu2"
End Select
End If
End Sub
Links:
Incr Links_boolean
Return
Rechts:
Incr Rechts_boolean
Return
End
Besonders bei dem Debouncen und der Subroutine bin ich mir noch unsicher wie das geht. Vielleicht könnt ihr mir ja helfen :)
Mfg Blacksun
Edit: Ich bin auch dankbar bei Tipps zur Quellcodeverkürzung oder Quellcodeumgestaltung