'RGB LED Control
'Picaxe 14M2
#picaxe 14m2
#No_Data
symbol Redcalc = W0
symbol Greencalc = W1
symbol Bluecalc = W2
symbol Green = W3
symbol Blue = W4
symbol Red = W5
symbol loopcounter = w6
symbol speed = w7
symbol ArduinoIn = w8
symbol Redout = c.2
symbol Blueout = b.4
symbol Greenout = b.2
dirsb=%010101 '1=out
dirsc=%000100
pwmout Redout,100,0 'Start the outputs
pwmout Blueout,100,0
pwmout Greenout,100,0
speed=1
main:
ArduinoIn=0
serin [200],b.1,T1200_4,("ready"),ArduinoIn ;Receive serial value from Arduino
random b18
if pinc.0=0 and pinc.1=0 and pinb.5=0 and pinb.3=0 then
gosub Redoff
gosub Greenoff
gosub Blueoff
endif
if pinc.0=1 and pinc.1=0 and pinb.5=0 and pinb.3=0 then
gosub Allwhite
endif
if pinc.0=0 and pinc.1=1 and pinb.5=0 and pinb.3=0 then
gosub Redwhite
endif
if pinc.0=0 and pinc.1=0 and pinb.5=1 and pinb.3=0 then
gosub Bluered
endif
if pinc.0=0 and pinc.1=0 and pinb.5=0 and pinb.3=1 then
gosub Bluewhite
endif
if pinc.0=1 and pinc.1=1 and pinb.5=0 and pinb.3=0 then
gosub Redgreen
endif
if pinc.0=1 and pinc.1=0 and pinb.5=1 and pinb.3=0 then
gosub Greenred
endif
if pinc.0=1 and pinc.1=0 and pinb.5=0 and pinb.3=1 then
speed=400
gosub Fade
endif
if pinc.0=0 and pinc.1=1 and pinb.5=1 and pinb.3=0 then
speed=50
gosub Fade
endif
if pinc.0=0 and pinc.1=1 and pinb.5=0 and pinb.3=1 then
Speed=2000
Gosub multi
endif
if pinc.0=0 and pinc.1=0 and pinb.5=1 and pinb.3=1 then
speed=400
gosub multi
endif
if pinc.0=1 and pinc.1=1 and pinb.5=1 and pinb.3=0 then
Speed=5
gosub Mono
endif
if pinc.0=1 and pinc.1=0 and pinb.5=1 and pinb.3=1 then
Speed=20
gosub Mono
endif
if pinc.0=1 and pinc.1=1 and pinb.5=0 and pinb.3=1 then
gosub randomchoice
endif
if pinc.0=1 and pinc.1=0 and pinb.5=1 and pinb.3=1 then
gosub Strobe
endif
if pinc.0=1 and pinc.1=1 and pinb.5=1 and pinb.3=1 then
gosub Twinkle
endif
goto main
'------------------------------------------------------------------------------
Allwhite:
gosub Redon
gosub Greenon
gosub Blueon
return
'-----------------------------------------
Redwhite:
Gosub Redon
gosub arduinoGreen
gosub arduinoblue
Return
'-----------------------------------------
Bluered:
Bluecalc=255-ArduinoIn
pwmduty Blueout,Bluecalc
Gosub arduinoRed
Gosub Greenoff
return
'-----------------------------------------
Bluewhite:
Gosub Blueon
Gosub arduinoGreen
Gosub arduinoRed
Return
'-----------------------------------------
Redgreen:
Redcalc=255-ArduinoIn
pwmduty Redout,Redcalc
Gosub ArduinoGreen
Gosub Blueoff
return
'-----------------------------------------
Greenred:
Greencalc=255-ArduinoIn
pwmduty Greenout,Greencalc
Gosub ArduinoRed
Gosub Blueoff
return
'-----------------------------------------
Multi:
Gosub Redon
Gosub Blueoff
Gosub Greenoff
Pause speed
Gosub Greenon
pause speed
Gosub Redoff
Gosub Blueon
pause speed
Gosub Greenoff
Gosub Redon
pause speed
Gosub Greenon
Pause speed
return
;------------------------------------------
Twinkle:
RANDOM w7
w8 = w7 // 40
if W8=4 then
pwmduty Redout,20
pwmduty Greenout,20
pwmduty Blueout,20
Gosub Redoff
Gosub Greenoff
Gosub Blueoff
endif
return
'-----------------------------------------
Strobe:
Gosub Redon
Gosub Greenon
Gosub Blueon
Redcalc=255-ArduinoIn
If ArduinoIn<250 then
pause Redcalc
Gosub Redoff
Gosub Greenoff
Gosub Blueoff
endif
return
'-----------------------------------------
Randomchoice:
RANDOM w7
w8 = w7 // 255 + 1
pwmduty Redout,w8
pause 400
RANDOM w7
w8 = w7 // 255 + 1
pwmduty Greenout,w8
pause 400
RANDOM w7
w8 = w7 // 255 + 1
pwmduty Blueout,w8
pause 400
return
'-----------------------------------------
mono:
for loopcounter = 0 to 1023 step speed
pwmduty Redout,loopcounter
next loopcounter
for loopcounter = 0 to 1023 step speed
Redcalc=1023-loopcounter
pwmduty Redout,Redcalc
next loopcounter
for loopcounter = 0 to 1023 step speed
pwmduty Greenout,loopcounter
next loopcounter
for loopcounter = 0 to 1023 step speed
Greencalc=1023-loopcounter
pwmduty Greenout,Greencalc
next loopcounter
for loopcounter = 0 to 1023 step speed
pwmduty Blueout,loopcounter
next loopcounter
for loopcounter = 0 to 1023 step speed
Bluecalc=1023-loopcounter
pwmduty Blueout,Bluecalc
next loopcounter
return
'-----------------------------------------
fade:
pwmduty Redout,0
Gosub Blueon
pwmduty Greenout,0
for loopcounter = 0 to 1023 step 5
pwmduty Redout,loopcounter
Redcalc = 255-loopcounter
pause 10
next loopcounter
pause speed
for loopcounter = 0 to 1023 step 5
Redcalc = 1023-loopcounter
pwmduty Blueout,Redcalc
pause 10
next loopcounter
pause speed
for loopcounter = 0 to 1023 step 5
pwmduty Greenout,loopcounter
Redcalc = 1023-loopcounter
pwmduty Redout,Redcalc
pause 10
next loopcounter
Pause speed
pwmduty Redout,0
pause speed
for loopcounter = 0 to 1023 step 5
pwmduty Blueout,loopcounter
Redcalc = 1023-loopcounter
pwmduty Greenout,Redcalc
pause 10
next loopcounter
pause speed
for loopcounter = 0 to 1023 step 5
Redcalc = 1023-loopcounter
pwmduty Blueout,Redcalc
pwmduty Redout,loopcounter
pwmduty greenout,loopcounter
pause 10
next loopcounter
pause speed
for loopcounter = 0 to 1023 step 5
Redcalc = 1023-loopcounter
pwmduty Blueout,loopcounter
pwmduty Redout,Redcalc
pwmduty greenout,Redcalc
pause 10
next loopcounter
pause speed
return
;------------------------------------------------------
Redon:
pwmduty Redout,255
return
Greenon:
pwmduty Greenout,255
return
Blueon:
pwmduty Blueout,255
return
Redoff:
pwmduty Redout,0
return
Greenoff:
pwmduty Greenout,0
return
Blueoff:
pwmduty Blueout,0
return
ArduinoRed:
pwmduty Redout,ArduinoIn
return
ArduinoGreen:
pwmduty Greenout,ArduinoIn
return
ArduinoBlue:
pwmduty Blueout,ArduinoIn
return