[color=Green]'*********************************
'* This routine uses a 20m2 processor, and RGB LED.
'*********************************************
'
'
'
' 20M2 or 20x2
' +------------+
' | |
' | |
' | | RGB LED, common anode
' | | ---------
' | C.0 | 10 ---330 ohm------->RED | "EDGE LIT SIGN"
' | C.1 | 9 ---330 ohm------->GREEN |---+5VDC
' | C.2 | 8 ---330 ohm------->BLUE |
' | | ---------
' | C.3 | 7 <--------- Clicker
' | C.4 | 6 ---------> Xmit serial data
' +------------+[/color]
[color=Blue]symbol LDR [/color][color=DarkCyan]= [/color][color=Blue]B.2 [/color][color=Green]'Pin 16; LDR sensor.[/color]
[color=Blue]Symbol CLICKER [/color][color=DarkCyan]= [/color][color=Blue]C.3 [/color][color=Green]'Pin 7; IR remote clicker. [/color]
[color=Blue]symbol XmitPin [/color][color=DarkCyan]= [/color][color=Blue]C.4 [/color][color=Green]'Pin 6; Xmit serial data.[/color]
[color=Blue]symbol [/color][color=Purple]PBSw [/color][color=DarkCyan]= [/color][color=Purple]pinC.5 [/color][color=Green]'Pin 5; PB switch to interrupt & "reset".[/color]
[color=Blue]symbol [/color][color=Purple]irdata [/color][color=DarkCyan]= [/color][color=Purple]b1 [/color][color=Green]'Data from clicker.[/color]
[color=Blue]symbol [/color][color=Purple]color [/color][color=DarkCyan]= [/color][color=Purple]b2[/color]
[color=Blue]symbol [/color][color=Purple]FlashRate [/color][color=DarkCyan]= [/color][color=Purple]w4 [/color][color=Green]'Flash rate of sign.[/color]
[color=Navy]#picaxe [/color][color=Black]20m2 [/color][color=Green]'20x2 works too.
'Macro turns all Sign LEDs off.[/color]
[color=Navy]#macro [/color][color=Black]SignOFF
[/color][color=Blue]let [/color][color=Purple]pinsC [/color][color=DarkCyan]= [/color][color=Navy]%00000111
#endmacro[/color]
[color=Blue]setfreq MDEFAULT[/color]
[color=Black]PowerOnReset:
[/color][color=Blue]pause [/color][color=Navy]1000 [/color][color=Green]'Initialize system.
[/color][color=Blue]let [/color][color=Purple]dirsC [/color][color=DarkCyan]= [/color][color=Navy]%00000111 [/color][color=Green]'Define output pins.
[/color][color=Blue]let [/color][color=Purple]dirsB [/color][color=DarkCyan]= [/color][color=Navy]%11100000 [/color][color=Green]'Define output pins.
[/color][color=Black]SignOFF [/color][color=Green]'Turn all LEDs off.
[/color]
[color=Black]Main:
[/color][color=Blue]do
Call [/color][color=Black]GetIR
[/color][color=Blue]Select case [/color][color=Purple]IRData
[/color][color=Blue]case [/color][color=Navy]0 [/color][color=Blue]call [/color][color=Black]SimpleSign
[/color][color=Blue]endselect
loop[/color]
[color=Green]'*Step through colors & flash on sign.[/color]
[color=Black]SimpleSign:
[/color][color=Blue]setint [/color][color=Navy]%00000000[/color][color=Black], [/color][color=Navy]%00001000 [/color][color=Green]'Interrupt on "clicker".
[/color][color=Blue]let [/color][color=Purple]Flashrate [/color][color=DarkCyan]= [/color][color=Navy]1200
[/color][color=Blue]do
for [/color][color=Purple]color [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to [/color][color=Navy]6
[/color][color=Blue]serout xmitpin[/color][color=Black],[/color][color=Blue]N4800_4[/color][color=Black],[/color][color=Blue]([/color][color=Black]#[/color][color=Purple]color[/color][color=Black],[/color][color=Blue]cr[/color][color=Black],[/color][color=Blue]lf)
let [/color][color=Purple]pinsC [/color][color=DarkCyan]= [/color][color=Purple]color [/color][color=Green]'For common anode RGB LED.
[/color][color=Blue]pause [/color][color=Purple]Flashrate [/color][color=Green]'Flash rate.
[/color][color=Blue]next [/color][color=Purple]color
[/color][color=Blue]loop[/color]
[color=Green]'*Routine reads IR clicker & corrects numeric key offset. [/color]
[color=Black]GetIR:
[/color][color=Blue]irin clicker[/color][color=Black],[/color][color=Purple]irdata [/color][color=Green]'Read data from IR clicker.
[/color][color=Blue]do[/color][color=Black]:[/color][color=Blue]let [/color][color=Purple]b5[/color][color=DarkCyan]=[/color][color=Navy]0[/color][color=Black]:[/color][color=Blue]count C.3[/color][color=Black],[/color][color=Navy]50[/color][color=Black],[/color][color=Purple]b2[/color][color=Black]:[/color][color=Blue]loop until [/color][color=Purple]b2[/color][color=DarkCyan]=[/color][color=Navy]0 [/color][color=Green]'Loop until key is released.
[/color][color=Blue]if [/color][color=Purple]irdata [/color][color=DarkCyan]>[/color][color=Navy]9 [/color][color=Blue]then return [/color][color=Green]'No correction needed, so return.
[/color][color=Blue]else let [/color][color=Purple]irdata[/color][color=DarkCyan]=[/color][color=Purple]irdata[/color][color=DarkCyan]+[/color][color=Navy]1[/color][color=DarkCyan]//[/color][color=Navy]10[/color][color=Black]:[/color][color=Blue]endif [/color][color=Green]'Correct numeric key offset.
[/color][color=Blue]return[/color]
[color=Green]'*Clicker interrupts & resets chip on clicker "power" key.[/color]
[color=Blue]Interrupt:
reset [/color][color=Green]'Valid interrupt from "Power" key (key code 21).[/color]