Hi!
Hab mir gestern gedacht, ich mach mal was "sinnvolles" mit den SoltLeds, und mit nen kleinen 5mm RGB Cluster gebaut. Gesteuert wird er mit nem Atmega8 (vom Pollin Board aus) und gelötet hab ich das Ganze nur auf Lochraster.
Hier mal ein paar Pics:
[Blockierte Grafik: http://i399.photobucket.com/albums/pp80/DjTommyB_1985/LED/P1050565.jpg]
[Blockierte Grafik: http://i399.photobucket.com/albums/pp80/DjTommyB_1985/LED/P1050566.jpg]
[Blockierte Grafik: http://i399.photobucket.com/albums/pp80/DjTommyB_1985/LED/P1050567.jpg]
[Blockierte Grafik: http://i399.photobucket.com/albums/pp80/DjTommyB_1985/LED/P1050568.jpg]
[Blockierte Grafik: http://i399.photobucket.com/albums/pp80/DjTommyB_1985/LED/P1050569.jpg]
Zur Software:
Programmiert wurden 6 Modi
1) Aus
2) Fader
3) Rot
4) Grün
5) Blau
6) Weiß
Funktioniert soweit alles einwandfrei bis auf ne Kleinigkeit: Beim Faden fangen die LED's an zu "blinken", ganz schnell...
Hier mal n Video:
Huir mal der Programm Code:
$regfile = "m8def.dat"
$crystal = 100000
Config Timer0 = Timer , Prescale = 64
On Ovf0 Fade
Enable Timer0
Config Int0 = Rising
On Int0 Level_change
Enable Int0
Enable Interrupts
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Led_red Alias Portb.3
Led_blue Alias Portb.4
Led_green Alias Portb.5
Dim Z_red As Byte
Dim L_red As Byte
Dim Z_green As Byte
Dim L_green As Byte
Dim Z_blue As Byte
Dim L_blue As Byte
Dim Rgb As Byte
Dim Modus As Byte
L_red = 0
L_green = 0
L_blue = 0
Do
If Modus = 0 Then
L_red = 255
L_green = 255
L_blue = 255
End If
If Modus = 2 Then
L_red = 0
L_green = 255
L_blue = 255
End If
If Modus = 3 Then
L_red = 255
L_green = 0
L_blue = 255
End If
If Modus = 4 Then
L_red = 255
L_green = 255
L_blue = 0
End If
If Modus = 5 Then
L_red = 0
L_green = 0
L_blue = 0
End If
If Z_red > L_red Then Led_red = 1 Else Led_red = 0
Z_red = Z_red - 1
If Z_green > L_green Then Led_green = 1 Else Led_green = 0
Z_green = Z_green - 1
If Z_blue > L_blue Then Led_blue = 1 Else Led_blue = 0
Z_blue = Z_blue - 1
Loop
End
Fade:
If Modus = 1 Then
If Rgb = 0 Then
If L_red > 0 Then
L_red = L_red - 1
End If
If L_blue < 255 Then
L_blue = L_blue + 1
End If
If L_red = 0 And L_blue = 255 Then
Rgb = 1
End If
End If
If Rgb = 1 Then
If L_green > 0 Then
L_red = L_red + 1
L_green = L_green - 1
End If
If L_red = 255 And L_green = 0 Then
Rgb = 2
End If
End If
If Rgb = 2 Then
If L_blue > 0 Then
L_green = L_green + 1
L_blue = L_blue - 1
End If
If L_green = 255 And L_blue = 0 Then
Rgb = 0
End If
End If
End If
Return
Level_change:
Rgb = 0
If Modus < 5 Then
Modus = Modus + 1
Else
Modus = 0
End If
Return
Alles anzeigen
Ich vermut mal es liegt am Prescaler vom Timer, wenn ich den auf 8 oder 1 setze, ist das Blinken der LED's zwar weg, aber das faden geht mir zu schnell... Wie kann ich das lösen?
mfg
Tommy