Hallo alle zusammen!
Ich hab jetzt endlich mein erstes Projekt (fast) fertig, selbst zusammen gelötet und programmiert!
Es ist eine RGB Led an einem Attiny2313.
Naja ich hab mir jetzt folgendes gedacht nachdem ich ein Taster eingelötet habe. Und zwar möchte ich mit dem Taster verschiedene Modi durchgehen.
Das klappt solang ganz gut bis mein Loop kommt, der die RGB komplett komplett durchfaden soll.
Die ersten 6 Modi sind normale/zusammengesetzte Farben.
Wie schaff ich es jetzt, dass der wenn der in dem Loop ist der alle Farben druchfaded jeden Moment abfragt, ob die Taste gedrückt wurde und dann in den nächsten Modi (hier: alle LED's aus) sprint???
Mein bisheriger Code:
Code:
$regfile = "attiny2313.dat"
$crystal = 8000000
$baud = 9600
Dim R As Byte
Dim G As Byte
Dim B As Byte
Dim Pwmwert As Byte
Dim Modus As Integer
Declare Sub Ledcalling
Config Portd.6 = Output
Config Portb.1 = Output
Config Portb.0 = Output
Config Pind.4 = Input
Portd.4 = 1
Const On = 1
Const Off = 0
Config Timer0 = Timer , Prescale = 1
Start Timer0
On Timer0 Pwmroutine
Enable Timer0
Enable Interrupts
Led1 Alias Portd.6
Led2 Alias Portb.1
Led3 Alias Portb.0
Modus = 1
Do
Debounce Pind.4 , 0 , On_taster1 , Sub
Loop
On_taster1:
If Modus = 8 Then
Modus = 0
End If
If Modus = 0 Then
R = 0
G = 0
B = 0
End If
If Modus = 1 Then
R = 255
G = 0
B = 0
End If
If Modus = 2 Then
R = 0
G = 255
B = 0
End If
If Modus = 3 Then
R = 0
G = 0
B = 255
End If
If Modus = 4 Then
R = 255
G = 255
B = 0
End If
If Modus = 5 Then
R = 255
G = 0
B = 255
End If
If Modus = 6 Then
R = 0
G = 255
B = 255
End If
If Modus = 7 Then
R = 255
G = 0
B = 0
Call Ledcalling
End If
Modus = Modus + 1
Return
Pwmroutine:
If R > Pwmwert Then
Led1 = 1
Else
Led1 = 0
End If
If G > Pwmwert Then
Led2 = 1
Else
Led2 = 0
End If
If B > Pwmwert Then
Led3 = 1
Else
Led3 = 0
End If
Incr Pwmwert
If Pwmwert > 255 Then Pwmwert = 0
Return
Sub Ledcalling
Do
Do
Waitms 8
G = G + 1
Loop Until G = 255
Waitms 2040
Do
Waitms 8
R = R - 1
Loop Until R = 0
Waitms 2040
Do
Waitms 8
B = B + 1
Loop Until B = 255
Waitms 2040
Do
Waitms 8
G = G - 1
Loop Until G = 0
Waitms 2040
Do
Waitms 8
R = R + 1
Loop Until R = 255
Waitms 2040
Do
Waitms 8
B = B - 1
Loop Until B = 0
Waitms 2040
Loop
End Sub
End
Ich hoffe mir kann einer von euch Profis helfen
Viele Grüße
Lesezeichen