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:
Ich hoffe mir kann einer von euch Profis helfenCode:$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
Viele Grüße







Zitieren

Lesezeichen