RGB-LED-Fernsteuerung

Elektronik-Labor   Projekte   AVR  


 

 
Basis dieser Anwendung ist die Platine des Kosmos-Mikrocontroller-Baukastens. Einige Testmuster und Prototypen lagen noch herum. Mein Sohn Fabian wollte RGB-LEDs mit einer RC5-Fernseh-Fernsteuerung steuern und ein passendes Bascom-Programm entwickeln. Da kamen diese Platinen mit ihrem Tiny2313 gerade recht. Der IR-Empfänger ist schon vorhanden, Vorwiderstände an den Ports auch. Die Dreifarben-LEDs mit gemeinsamer Kathode konnten deshalb direkt angeschlossen werden. Und da alle Anschlüsse des Controllers herausgeführt sind, konnte auch ein Programmieradapter angeschlossen werden.
 

 
Eine Karton-Montageplatte mit den LEDs trägt einige Steckkontakte für die verwendeten Pins. Das Modul selbst muss daher nicht angelötet werden und kann auch wieder auf dem Kosmos-Baukasten zum Einsatz kommen. Nur die Software ist dann ganz anders. Hier wird mit Bascom programmiert. Weil das Kosmos-Betriebssystem überschreiben wird, gibt es keinen Weg zurück. Ab jetzt ist es ein Kosmos-Bascom-Mikrocontroller.




Die Software wertet die Tasten 0 bis 9 der Fernbedienung aus. Man kann einzelne Farben anwählen oder aber einen Farbwechsel-Modus einschalten. Es können mehrere Module gleichzeitig im Raum verteilt werden, die dann mit der gleichen Fernbedienung angesteuert werden.

Download: RC5LED1.zip

'RGB-LEDs mit Tiny2313 und RC5-Fernsteuerung
'Fabian K.

$crystal = 4000000
$regfile = "attiny2313.dat"

Config Rc5 = Pind.0 ' Eingang Sensor
Config Portb = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down , Prescale = 1
Config Timer0 = Pwm , Prescale = 1 , Compare A Pwm = Clear Down , Pwm = On
Start Timer1
Start Timer0

Enable Interrupts

Vgruen Alias Ocr0a
Vblau Alias Ocr1b
Vrot Alias Ocr1a

Dim I As Byte
Dim Addr As Byte
Dim Comm As Byte
Dim Vfade As Bit
Dim Vphase As Byte
Dim Vzust As Byte
Dim Vping As Byte


Vgruen = 255

Do
Getrc5(addr , Comm)
If Addr <> 255 Then
Reset Comm.7

Select Case Comm
Case 1 : Vblau = 0 '1: rot
Vrot = 255
Vgruen = 0

Case 2 : Vblau = 0 '2: grün
Vrot = 0
Vgruen = 255

Case 3 : Vrot = 0 '3: Blau
Vgruen = 0
Vblau = 255

Case 4 : Vblau = 255 '4: weiß
Vrot = 255
Vgruen = 255

Case 5 : Vblau = 255 '5: violett
Vrot = 255
Vgruen = 0

Case 6 : Vblau = 0 '6 gelb
Vrot = 255
Vgruen = 255

Case 7 : Vblau = 255 '7: baul-grün
Vrot = 0
Vgruen = 255

Case 8 : Vfade = 1 '8: Auto-Farbwechsel ein
Vphase = 1
Case 9 : Vfade = 0 '9: Auto-Farbwechsel aus
Case 0 : Vblau = 0 '0: Alles aus
Vrot = 0
Vgruen = 0

Case Else : Vrot = Rnd(255)
Vblau = Rnd(255)
Vgruen = Rnd(255)

End Select
End If

If Vfade = 1 Then 'Auto-Farbwechsel
Incr Vping
'If Vping = 1 Then
Incr Vzust
Select Case Vphase
Case 1 : Vblau = Vzust
Vrot = 0
Vgruen = 255 - Vzust
If Vzust = 255 Then Vphase = 2
Case 2 : Vblau = 255 - Vzust
Vrot = Vzust
Vgruen = 0
If Vzust = 255 Then Vphase = 3
Case 3 : Vblau = 0
Vrot = 255 - Vzust
Vgruen = Vzust
If Vzust = 255 Then Vphase = 1
End Select
'End If
End If
Loop



Elektronik-Labor   Projekte   AVR