Q is a 4 wheel drive bot am working on am using the 28x2 base shield two lm293D motor drivers and a 14m2 to control the servo. has four micro geared motors and four metal geared MG90 servo's, a quick pan around https://www.youtube.com/watch?v=0zpg2XtOaeY
powered by 4 AA read a little more over at http://www.letsmakerobots.com/robot/project/q this link http://www.picaxeforum.co.uk/showthread.php?26577-here-s-Q how to wire the ERF to the shield for wireless programming.
the code is quite raw at the moment but it is working main code on the 28x2
and the 14M2
sort test for wireless control using keyboard and erf https://www.youtube.com/watch?v=vWubjH-r9ks&feature=youtu.be https://www.youtube.com/watch?v=yzwOdP-ZN40&feature=youtu.be
the code is quite raw at the moment but it is working main code on the 28x2
Code:
' simple serial Tx test
'wriiten by jinx 2014
'rev 1.0.0
'############ Directive ###############
#com 7
#picaxe 28x2
#no_data
#no_table
#terminal 9600
'######### CONSTANTS ##################
symbol toSD =c.6
symbol fromSD=c.7
symbol delay = 5000
symbol junk =w0
symbol S_pos = b3
'4= front right, 3= left front
init: ' 1/2/3 /4
let dirsb = %11111111
pause 10
let pinsb = %00000000
main:
' let S_pos = 2
' gosub senddata
' pause 10
' let pinsb = %00000000
' pause 1000
' let pinsb = %01101001
pause 10
gosub slidergtfwd
pause 1000
gosub slidelftback
pause 1000
gosub spinLFT
pause 5000
gosub spinRGT
pause 5000
gosub FWD
pause 1000
gosub BCK
pause 1000
' gosub RGT
'pause delay
goto main
senddata:
high toSD,1
pulsin fromSD, 1, junk
low toSD
serout toSD,n2400_8, (S_pos)
' sertxd ("sent",#S_pos, cr, lf)
return
fwd:
let S_pos = 1
gosub senddata
pause 100
let pinsb = %00000000
pause 10
let pinsb = %10101010
pause 10
return
BCK:
let S_pos = 1
gosub senddata
pause 20
let pinsb = %00000000
pause 10
let pinsb = %01010101
return
RGT:
let S_pos = 2 'done
gosub senddata
pause 20
let pinsb = %00000000
pause 10
let pinsb = %01101001
return
LFT:
let S_pos = 2 'done
gosub senddata
pause 20
let pinsb = %00000000
pause 10
let pinsb = %10010110
return
slidergtfwd:
let S_pos = 3
gosub senddata
pause 20
let pinsb = %00000000
pause 10
let pinsb = %01010101
return
slidelftback:
let S_pos = 3
gosub senddata
pause 20
let pinsb = %00000000
pause 10
let pinsb = %10101010
return
slideLFT:
let S_pos = 4
gosub senddata
pause 100
return
spinLFT:
let S_pos = 5
gosub senddata
pause 100
let pinsb = %00000000
pause 10
let pinsb = %10011001
pause 10 'both forward
return
spinRGT:
let S_pos = 5
gosub senddata
pause 100
let pinsb = %00000000
pause 10
let pinsb = %01100110
pause 10 'both forward
return
Code:
' simple serial test
' reciever
' written by jinx 2014
' rev 0,0,1
'######## Directive #################
#com 7
#picaxe 14m2
#no_data
#terminal 4800
'######## constants ##################
symbol fromMP = c.3 'connect to c.6 on the 28x2
symbol toMP = c.4 'connect to c.7 on the 28x2
symbol front_R = b.5
symbol front_L = b.4
symbol back_L = b.3
symbol back_R = b.2
'######## Variables ##################
symbol S_pos = w0
symbol SDflag = pinc.3
'##############################################
init:
dirsc = %110111
low toMP
servo front_R,120
pause 20
servo front_L,162
pause 20
servo back_L,125
pause 20
servo back_R,175
pause 20
'########### MAIN CODE ########################
main:
do
if SDflag = 1 then gosub getdata
pause 100 '
' pause 20
' servo front_L,162
' pause 20
' servo back_L,125
' pause 20
' servo back_R,175
' pause 1000
' servo front_R,80
' pause 20
' servo front_L,120
' pause 20
' servo back_L,78
' pause 20
' servo back_R,130
' pause 20
' pause 2000
'pause 20
' pause 1000
'gosub fwd
'pause 1000
'gosub side
'pause 1000
'gosub slideLFT
'pause 1000
'gosub slideRGT
'pause 1000
'gosub spin
'pause 1000
loop
'######### SUBROUTINES ########################
getdata:
pulsout toMP,5
serin fromMP,n2400_4,S_pos
' sertxd ("recieved ",#S_pos,cr,lf)
select case S_pos
case 1
gosub fwd
case 2
gosub side
case 3
gosub slideLFT
case 4
gosub slideRGT
case 5
gosub spin
end select
return
fwd:
' sertxd ("forward ",cr,lf)
servo front_R,120 '
pause 20
servo front_L,162
pause 20
servo back_L,125
pause 20
servo back_R,175
pause 20
return
side:
' sertxd ("sidewards ",cr,lf)
servopos front_R,210 ' sets the wheel for
pause 20
servopos back_R,90
pause 20
servopos front_L,75 'either left or right
pause 20
servopos back_L,215
pause 20
return
slideLFT:
servo front_R,170
pause 20
servo front_L,210
pause 20
servo back_L,170
pause 20
servo back_R,220
pause 20
return
slideRGT:
servo front_R,80
pause 20
servo front_L,120
pause 20
servo back_L,78
pause 20
servo back_R,130
pause 20
return
spin:
servo front_R,170
pause 20
servo front_L,130
pause 20
servo back_L,170
pause 20
servo back_R,133
pause 20
return
Last edited: