hi,
am working on my luna bot led display just adding more effects, now the leds are spread across both C and B pins, the way am writing the code is makes for long read addressing individual pins
now i dont mind this way because am not gonna watch the the code running just the leds it does make for long program
i found a few threads using hardware abstraction layer that tinyb,hippy and few others talking about and am beginning to understand its use and i got this example working
am stuggling to get my head around the use of table to create other effects so could anyone explain the use of table and give an example to create a split affect.
jinx
here's a pic
am working on my luna bot led display just adding more effects, now the leds are spread across both C and B pins, the way am writing the code is makes for long read addressing individual pins
Code:
; *******************************
; ***** Sample Header File *****
; *******************************
; Filename: luna cylon(LED
; Date: july 26 '12
; File Version: rev0.1
; Written by: jinx
; Function: bot visaul output/display
; Last Revision:
; Target PICAXE:
; *******************************
#Picaxe 20X2
#No_Table
#No_Data
symbol led1 = c.1
symbol led2 = c.0
symbol led3 = b.0
symbol led4 = b.1
symbol led5 = c.5 'pwm
symbol led6 = b.2
symbol led7 = b.3
symbol led8 = b.4
symbol led9 = b.6
symbol counter = b1
symbol abit = 50
symbol abitx = b4
symbol abity = b5
init: pause 100
HI2cSetup i2cslave, %11100000
main:
Do
low led1,led2,led3,led4,led5,led6,led7,led8,led9
pause 30
Get 0, b3
Get 8,abitx
Get 16,abity
sertxd(" received cmd ",#b3,13,10)
if b3 = 1 then ld1
if b3 = 2 then ld2
if b3 = 3 then ld3
if b3 = 4 then ld4
if b3 = 5 then ld5
if b3 = 6 then ld6
if b3 = 10 Then cylon1
if b3 = 30 then split
if b3 = 100 then Rsplit
if b3 = 15 then Lsplit
pause 10
Loop
split:
for counter = 1 to 6
high led9
high led1
pause abit
low led9
low led1
pause abit
high led8
high led2
pause abit
low led8
low led2
pause abit
high led7
high led3
pause abit
low led7
low led3
pause abit
high led6
high led4
pause abit
low led6
low led4
pause abit
high led5
pause abit
low led5
pause abit
high led6
high led4
pause abit
low led6
low led4
pause abit
high led7
high led3
pause abit
low led7
low led3
pause abit
high led8
high led2
pause abit
low led8
low led2
pause abit
next counter
b3= b3+1
pause 10
return
cylon:
high led1
pause abitx
low led1
pause abitx
high led2
pause abitx
low led2
pause abitx
high led3
pause abitx
low led3
pause abitx
high led4
pause abitx
low led4
pause abitx
high led5
pause abitx
low led5
pause abitx
high led6
pause abitx
low led6
pause abitx
high led7
pause abitx
low led7
pause abitx
high led8
pause abitx
low led8
pause abitx
high led9
pause abitx
low led9
pause abitx
high led8
pause abitx
low led8
pause abitx
high led7
pause abitx
low led7
pause abitx
high led6
pause abitx
low led6
pause abitx
high led5
pause abitx
low led5
pause abitx
high led4
pause abitx
low led4
pause abitx
high led3
pause abitx
low led3
pause abitx
high led2
pause abitx
low led2
pause abitx
high led1
pause abitx
low led1
pause abitx
b3 = b3+1
return
Rsplit:
high led1
pause abitx
high led2
pause abitx
high led3
pause abitx
high led4
pause abitx
high led5
pause abitx
b3= b3+1
pause abitx
return
Lsplit:
high led9
pause abitx
high led8
pause abitx
high led7
pause abitx
high led6
pause abitx
high led5
pause abitx
b3= b3+1
return
srftk:for counter = 1 to 4
pause 10
high led5
pause abity
high led4
pause abity
high led3
pause abity
high led2
pause abity
high led1
pause abity
low led1
pause abity
low led2
pause abity
low led3
pause abity
low led4
pause abity
low led5
pause abity
high led6
pause abity
high led7
pause abity
high led8
pause abity
high led9
pause abity
low led9
pause abity
low led8
pause abity
low led7
pause abity
low led6
pause abity
next counter
b3 = b3+1
pause abitx
return
cylon1:
for counter = 1 to 4
high led1
pause abitx
low led1
pause abitx
high led2
pulsout led1,300
pulsout led3,100
pause abitx
low led2
pause abitx
high led3
pulsout led2,300
pulsout led1,200
pulsout led4,100
pause abitx
low led3
pause abitx
high led4
pulsout led3,300
pulsout led2,200
pulsout led1,100
pulsout led5,100
pause abitx
low led4
pause abitx
high led5
pulsout led4,300
pulsout led3,200
pulsout led2,100
pulsout led6,100
pause abitx
low led5
pause abitx
high led6
pulsout led5,300
pulsout led4,200
pulsout led3,100
pulsout led7,100
pause 50
low led6
pause 50
high led7
pulsout led6,300
pulsout led5,200
pulsout led4,100
pulsout led8,100
pause 50
low led7
pause abitx
high led8
pulsout led7,300
pulsout led6,200
pulsout led5,100
pulsout led9,100
pause abitx
low led8
pause abitx
high led9
pulsout led8,300
pulsout led7,200
pulsout led6,100
pause abitx
low led9
pause abitx
high led8
pulsout led9,300
pause abitx
low led8
pause abitx
high led7
pulsout led8,300
pulsout led9,200
pulsout led6,100
pause abitx
low led7
pause abitx
high led6
pulsout led7,300
pulsout led8,200
pulsout led9,100
pulsout led5,100
pause abitx
low led6
pause abitx
high led5
pulsout led6,300
pulsout led7,200
pulsout led8,100
pulsout led4,100
pause abitx
low led5
pause abitx
high led4
pulsout led5,300
pulsout led6,200
pulsout led7,100
pulsout led3,100
pause abitx
low led4
pause abitx
high led3
pulsout led4,300
pulsout led5,200
pulsout led6,100
pulsout led2,100
pause 50
low led3
pause abitx
high led2
pulsout led3,300
pulsout led4,200
pulsout led5,100
pulsout led1,100
pause abitx
low led2
pause abitx
high led1
pulsout led2,300
pulsout led3,200
pause abitx
low led1
pause abitx
next counter
b3 = b3+1
pause 10
return
i found a few threads using hardware abstraction layer that tinyb,hippy and few others talking about and am beginning to understand its use and i got this example working
Code:
#Picaxe 20x2
dirc.1 = 1
dirc.0 = 1
dirb.0 = 1
dirb.1 = 1
dirc.5 = 1
dirb.2 = 1
dirb.3 = 1
dirb.4 = 1
dirb.6 = 1
symbol delay1 = 40
symbol counter = b6
init:
pause 100
HI2cSetup i2cslave, %11100000
main:
pause 100
gosub cylon
pause 100
goto main
OutputLeds:
pinc.1 = bit0
pinc.0 = bit1
pinb.0 = bit2
pinb.1 = bit3
pinc.5 = bit4
pinb.2 = bit5
pinb.3 = bit6
pinb.4 = bit7
pinb.6 = bit8
Return
cylon:
for counter = 1 to 6
w0 = %0000000001
Do
Gosub OutputLeds
w0 = w0 * 2
pause delay1
Loop Until w0 = 0
w0 = %1000000000
Do
w0 = w0 / 2
pause delay1
Gosub OutputLeds
Loop Until w0 = 0
next counter
return
split:
jinx
here's a pic
Last edited: