main:
gosub fmove
pause 2000
gosub smove
gosub lmove
pause 5000
gosub smove
gosub bmove
pause 2000
gosub smove
gosub fmove
pause 10000
gosub smove
gosub rmove
pause 1000
gosub smove
gosub lmove
pause 3000
gosub smove
gosub rmove
pause 1000
gosub smove
gosub lmove
pause 3000
gosub smove
end
fmove:
high 0
high 2
return
bmove:
high 1
high 4
return
lmove:
high 1
high 2
return
rmove:
high 0
high 4
return
smove:
low 0
low 1
low 2
low 4
return
symbol fmove = %xxxxxxxx
symbol bmove = %xxxxxxxx
symbol lmove = %xxxxxxxx
symbol rmove = %xxxxxxxx
symbol smove = %xxxxxxxx
main:
let pins = fmove
pause 2000
let pins = smove
let pins = lmove
pause 5000
let pins = smove
let pins = bmove
pause 2000
let pins = smove
let pins = fmove
pause 10000
let pins = smove
gosub rmove
pause 1000
let pins = smove
let pins = lmove
pause 3000
let pins = smove
let pins = rmove
pause 1000
let pins = smove
let pins = lmove
pause 3000
let pins = smove
end
#picaxe 08
symbol p01 = 1000
symbol p02 = 2000
symbol p03 = 3000
symbol p05 = 5000
symbol p10 = 10000
'init:
low 0 : low 1 : low 2 : low 4 'smove
'main:
high 0 : high 2 'fmove
pause p02
low 0 : low 1 : low 2 : low 4 'smove
high 1 : high 2 'lmove
pause p05
low 0 : low 1 : low 2 : low 4 'smove
high 1 : high 4 'bmove
pause p02
low 0 : low 1 : low 2 : low 4 'smove
high 0 : high 2 'fmove
pause p10
low 0 : low 1 : low 2 : low 4 'smove
high 0 : high 4 'rmove
pause p01
low 0 : low 1 : low 2 : low 4 'smove
high 1 : high 2 'lmove
pause p03
low 0 : low 1 : low 2 : low 4 'smove
high 0 : high 4 'rmove
pause p01
low 0 : low 1 : low 2 : low 4 'smove
high 1 : high 2 'lmove
pause p03
low 0 : low 1 : low 2 : low 4 'smove
end
#picaxe 08
symbol p01 = 1000
symbol p02 = 2000
symbol p03 = 3000
symbol p05 = 5000
symbol p10 = 10000
'init:
' 4.210
let dirs = %10111 'pins 0,1,2,4 = outputs
let pins = %00000 'stop
'main:
let pins = %00101 'fwrd
pause p02
let pins = %00000 'stop
let pins = %00110 'left
pause p05
let pins = %00000 'stop
let pins = %10010 'back
pause p02
let pins = %00000 'stop
let pins = %00101 'fwrd
pause p10
let pins = %00000 'stop
let pins = %10001 'rght
pause p01
let pins = %00000 'stop
let pins = %00110 'left
pause p03
let pins = %00000 'stop
let pins = %10001 'rght
pause p01
let pins = %00000 'stop
let pins = %00110 'left
pause p03
let pins = %00000 'stop
end
#picaxe 08
'--delay value consts (0-65535 milliseconds)
symbol p01 = 1000
symbol p02 = 2000
symbol p03 = 3000
symbol p05 = 5000
symbol p10 = 10000
'--vars
symbol index = b8 'sequence thru each move/pause value
symbol action = b4 'stop, move, pause, or done.
symbol ms_delay = w1 'b2:b3 resultant pause value
'--moves
symbol smove = %00000 'stop ( 0)
symbol fmove = %00101 'fwrd ( 5)
symbol bmove = %10010 'back (18)
symbol lmove = %00110 'left ( 6)
symbol rmove = %10001 'rght (17)
symbol move_max = 23 'values <= this are moves
symbol ms_1000 = 110 '110 -100 *100 = 1000 ms delay
symbol ms_2000 = 120 '120 -100 *100 = 2000 ms delay
symbol ms_3000 = 130 '130 -100 *100 = 3000 ms delay
symbol ms_5000 = 150 '150 -100 *100 = 5000 ms delay
symbol ms_10000 = 200 '200 -100 *100 = 10000 ms delay
symbol done = 255
'action values of 0,4,6,17,18 = moves
'action values > 100 are millisecond pauses
'action value of 255 means stop cos we're done
'init:
' 4.210
let dirs = %10111 'pins 0,1,2,4 = outputs
let pins = smove 'stop
main:
index = 0
read index, action
if action = done then
end
else if action <= move_max then
let pins = smove
let pins = action
else if action > 100 then
ms_delay = action - 100 * 100
pause ms_delay
endif
goto main
'end
'--Actions: moves & pauses
EEPROM 0,(fmove, ms_2000)
EEPROM (lmove, ms_5000)
EEPROM (bmove, ms_2000)
EEPROM (fmove, ms_10000)
EEPROM (rmove, ms_1000)
EEPROM (lmove, ms_3000)
EEPROM (rmove, ms_1000)
EEPROM (lmove, ms_3000)
'EEPROM (add more moves & pauses here)
EEPROM (smove, done) 'finish cleanly
for b1 =1 to 5
goto ring,reset, power, pause,ring2
next b1
ring:
bla bla bla
reset:
bla bla bla
power:
Bla bla bla
pause:
bla bla bla
Ring2:
bla bla bla
symbol fmove = %00101 'forward
symbol bmove = %10010 'backwards/reverse
symbol lmove = %00110 'left turn
symbol rmove = %10001 'right turn
symbol smove = %00000 'stop movement
'smove is required after every pause
main:
let dirs = %10111
let pins = fmove 'Copy these two lines and change accordingly
pause 1000 'Time is in milliseconds 1000 = 1 sec
let pins = lmove
pause 500
let pins = rmove
pause 500
let pins = lmove
pause 500
let pins = rmove
pause 500
let pins = lmove
pause 500
let pins = rmove
pause 500
let pins = bmove
pause 3000
let pins = fmove
pause 500
let pins = bmove
pause 500
let pins = fmove
pause 500
let pins = bmove
pause 500
let pins = fmove
pause 500
let pins = bmove
pause 500
let pins = fmove
pause 500
let pins = bmove
pause 500
let pins = smove 'Stop power so that the next command will execute cleanly
end 'Discontinue execution of program. Use goto main if you want to continue.