Wenn ich den Code so benutze, kommen auf meinem LCD komische Zeichen und die LED geht weder an noch aus.
Druckbare Version
Wenn ich den Code so benutze, kommen auf meinem LCD komische Zeichen und die LED geht weder an noch aus.
Bei Debounce fehlt die Sub-Erklärung und das Display muss nur einmal überhaupt gecleart werden, sonst flackert es. Wird ja doch an die gleiche Stelle geschrieben. Sonst läuft es.
Debounce Pinc.0 , 1 , Flag , Sub
Ja, so geht es. Dankeschön ;)
Noch eine kleine Frage: ist es möglich, eine Zeile des LCDs zu invertieren? Also die Segmente zu schwärzen und die Zeichen grün unterlegen? Wollte ein Menü machen, in dem man mehrere Punkte auswählen kann und das Invertrieren wäre praktisch um den momentan ausgewählten Command hervorzuheben.
nope, das geht nicht, das musste mit nem > oder so machen oder () oder so
Martin
Oki, dann nehm ich einfach nen Pfeil ;)
was du natürlich machen kannst fällt mir grad ein, du kannst zumindest nen char selber definen und da dann nen pfeil basteln oder sogar aus mehreren ne animation oder sowas ^^
ansonsten kauf dir nen glcd, die können alles, und sind auch gar nich mehr so teuer ^^
Martin
Hm ich habe eher an ein 4*20 Zeichen Display gedacht, da mir die vier Zeilen ausreichen (da ich nur 3 Kommandos für die Steuerung habe).
Aber noch eine Frage: wie könnte man es realisieren, dass der Pfeil zwischen den drei Auswahlmöglichkeiten hin und her switcht?
Ich würde gerne die drei Kommandos auf dem LCD haben, die dann über einen Taster nacheinander angewählt werden können. Geht das auch noch mit Debounce oder muss ich da einen anderen Befehl für verwenden?
So habe ich mir das vorgestellt:
-> Kommando 1
Kommando 2
Kommando 3
Kommando 1
-> Kommando 2
Kommando 3
Kommando 1
Kommando 2
-> Kommando 3
geht genauso mit debounce, musste immer hochzählen, wenner taster gedrückt wurde, und wenn die zahl größer als 3 wird, dann auf 1 zurücksetzen.
und dann fragste im programm die zahl ab, wo der pfeil nur gezeichnet werden soll, und zeigstn dort an.
Martin
Habe nun etwas rumgespielt und auch das Programm zu meiner Zufriedenheit hinbekommen. In meinem LCD flackert es leider ein bisschen (nicht schlimm, nur ein Schönheitsfehler).
Da ich aber noch Anfänger in Bascom bin und dies eigentlich mein erstes echts Projekt ist, würde ich gern wissen, ob man den Code vielleicht irgendwo noch vereinfachen könnte (ausserdem bin ich echt stolz, dass ich das [fast] ganz alleine geschafft habe und will mein Ergebnis präsentieren :cheesy: )
Code:'Deklarationen
$regfile = "m8def.dat"
$crystal = 8000000
Ddrc = &B00001100
Portc = &B00000011
'LCD
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2
Config Lcdbus = 4
Dim Command As Bit
Dim Led1 As Bit
Dim Led1_sub As Bit
Dim Led2 As Bit
Dim Led2_sub As Bit
'Programm
Cls
Do
Locate 1 , 1
Lcd " Led1"
Locate 2 , 1
Lcd " Led2"
Debounce Pinc.0 , 1 , Flag , Sub
If Command = 0 Then Gosub Led1
If Command = 1 Then Gosub Led2
Loop
End
'Subroutinen
Led1:
Debounce Pinc.1 , 1 , Led1_sub , Sub
Locate 1 , 1
Lcd "-> Led1"
Return
Led1_sub:
If Portc.2 = 1 Then
Portc.2 = 0
Locate 1 , 9
Lcd "(aus)"
Else
Portc.2 = 1
Locate 1 , 9
Lcd "(an)"
End If
Return
Led2:
Debounce Pinc.1 , 1 , Led2_sub , Sub
Locate 2 , 1
Lcd "-> Led2"
Return
Led2_sub:
If Portc.3 = 1 Then
Portc.3 = 0
Locate 2 , 9
Lcd "(aus)"
Else
Portc.3 = 1
Locate 2 , 9
Lcd "(an)"
End If
Return
Flag:
Toggle Command
Return