[color=Navy]#picaxe [/color][color=Black]40x2[/color]
[color=Navy]#no_table
#no_data[/color]
[color=Blue]setfreq em64[/color]
[color=Green]; =======================================================
; Example 4
; Bounce one LED from end to end of the light strip
; =======================================================
; 40X2 5V -.- Light strip
; .-----__-----. |
; | RST B.7 | `--> RED +V
; = = .--> SCK --------> BLU CK
; | C.2 C.5 |--|--> SDO --------> GRN DI
; .--| C.3 C.4 | | .--> YEL 0V
; | | D.0 D.3 | | |
; | | D.1 D.2 | | 0V _|_
; | `------------' |
; `------------------'
; Set how many LED modules in the strip[/color]
[color=Blue]Symbol HOW_MANY_LEDS [/color][color=DarkCyan]= [/color][color=Navy]60[/color]
[color=Blue]Symbol HOW_MANY_LEDS_MINUS_1 [/color][color=DarkCyan]= [/color][color=Blue]HOW_MANY_LEDS [/color][color=DarkCyan]- [/color][color=Navy]1[/color]
[color=Green]; Set the brightness of the LED while testing
; Use small values to keep current consumption low[/color]
[color=Blue]Symbol BRIGHTNESS [/color][color=DarkCyan]= [/color][color=Navy]150 [/color][color=Green]; 0 to 255 (full)
; Initialise the HSPI interface[/color]
[color=Navy]#macro [/color][color=Black]init[/color][color=Blue]()
hspisetup spimode00[/color][color=Black], [/color][color=Blue]spifast[/color]
[color=Navy]#endmacro[/color]
[color=Green]; Send a four byte packet out via HSPI[/color]
[color=Navy]#macro [/color][color=Black]sendPacket[/color][color=Blue]( [/color][color=Black]n1, n2, n3, n4 [/color][color=Blue])
hspiout( [/color][color=Black]n1, n2, n3, n4 [/color][color=Blue])[/color]
[color=Navy]#endmacro[/color]
[color=Green]; Send the start of data header[/color]
[color=Navy]#macro [/color][color=Black]head[/color][color=Blue]()
[/color][color=Black]sendPacket[/color][color=Blue]( [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00 [/color][color=Blue])[/color]
[color=Navy]#endmacro[/color]
[color=Green]; Send a LED controlling command[/color]
[color=Navy]#macro [/color][color=Black]send[/color][color=Blue]( [/color][color=Black]red, green, blue[/color][color=Blue])
[/color][color=Black]sendPacket[/color][color=Blue]( [/color][color=Navy]$FF[/color][color=Black], blue, green, red [/color][color=Blue])[/color]
[color=Navy]#endmacro[/color]
[color=Green]; Send the end of data tail[/color]
[color=Navy]#macro [/color][color=Black]tail[/color][color=Blue]()
[/color][color=Black]sendPacket[/color][color=Blue]( [/color][color=Navy]$FF[/color][color=Black], [/color][color=Navy]$FF[/color][color=Black], [/color][color=Navy]$FF[/color][color=Black], [/color][color=Navy]$FF [/color][color=Blue])[/color]
[color=Navy]#endmacro[/color]
[color=Black]PowerOnReset:
[/color][color=Green]; Initialise the HSPI interface
[/color][color=Black]init
[/color][color=Green]; Turn all LED modules off
[/color][color=Black]head
[/color][color=Blue]for [/color][color=Purple]w0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]To HOW_MANY_LEDS
[/color][color=Black]send[/color][color=Blue]( [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00 [/color][color=Blue]) [/color][color=Green]; 1 to last = Off
[/color][color=Blue]next
[/color][color=Black]tail
BounceLed:
[/color][color=Green]; Set one LED at a time
; 'w0' indicates which LED to set
[/color][color=Blue]do
[/color][color=Black]head
[/color][color=Blue]for [/color][color=Purple]w0 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to HOW_MANY_LEDS
[/color][color=Black]send[/color][color=Blue]( BRIGHTNESS[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00 [/color][color=Blue]) [/color][color=Green]; red
[/color][color=Blue]pause [/color][color=Navy]20
[/color][color=Blue]next[/color]
[color=Black]tail
[/color][color=Blue]for [/color][color=Purple]w0 [/color][color=DarkCyan]= [/color][color=Blue]HOW_MANY_LEDS_MINUS_1 to [/color][color=Navy]1 [/color][color=Blue]step [/color][color=DarkCyan]-[/color][color=Navy]1
[/color][color=Blue]Gosub [/color][color=Black]SetLed
[/color][color=Blue]next
loop[/color]
[color=Black]SetLed:
[/color][color=Green]; Set a specific LED and keep the others off
[/color][color=Black]head
[/color][color=Blue]for [/color][color=Purple]w1 [/color][color=DarkCyan]= [/color][color=Navy]1 [/color][color=Blue]to HOW_MANY_LEDS
if [/color][color=Purple]w1[/color][color=DarkCyan]<[/color][color=Purple]w0 [/color][color=Blue]then [/color][color=Black]send[/color][color=Blue]( BRIGHTNESS[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00 [/color][color=Blue]) [/color][color=Green]; red
[/color][color=Blue]elseif [/color][color=Purple]w0[/color][color=DarkCyan]<[/color][color=Blue]HOW_MANY_LEDS then [/color][color=Black]send[/color][color=Blue]( [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00[/color][color=Black], [/color][color=Navy]$00 [/color][color=Blue]) [/color][color=Green]; red
[/color][color=Blue]endif
next
[/color][color=Black]tail
[/color][color=Blue]return[/color]