'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