Difference between revisions of "Blog 17"

From BitWizard Wiki
Jump to navigation Jump to search
Line 81: Line 81:
#31 B forwards
#31 B forwards
#32 B stop
#32 B stop
Address="bw_tool -I -D /dev/i2c-1 -a 90"
Speed="80"
Speed2="40"
while true; do
while true; do
Line 87: Line 91:
if [ $BUTTON = "20" ]; then
if [ $BUTTON = "20" ]; then
#Car going forwards
#Car going forwards
bw_tool -I -D /dev/i2c-1 -a 90 -W 21:80:b
$Address -W 21:$Speed:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 31:80:b
$Address -W 31:$Speed:b
fi
fi
if [ $BUTTON = "10" ]; then
if [ $BUTTON = "10" ]; then
#Car going backwards
#Car going backwards
bw_tool -I -D /dev/i2c-1 -a 90 -W 20:80:b
$Address -W 20:$Speed:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 30:80:b
$Address -W 30:$Speed:b
fi
if [ $BUTTON = "08" ]; then
if [ $BUTTON = "08" ]; then
#Car going left
#Car going left
bw_tool -I -D /dev/i2c-1 -a 90 -W 21:30:b
$Address -W 21:$Speed2:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 31:80:b
$Address -W 31:$Speed:b
fi
fi
if [ $BUTTON = "04" ]; then
if [ $BUTTON = "04" ]; then
#Car going right
#Car going right
bw_tool -I -D /dev/i2c-1 -a 90 -W 21:80:b
$Address -W 21:$Speed:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 31:30:b
$Address -W 31:$Speed2:b
fi
fi
if [ $BUTTON = "02" ]; then
if [ $BUTTON = "02" ]; then
#Car Stops
#Car Stop AGAIN
bw_tool -I -D /dev/i2c-1 -a 90 -W 22:80:b
$Address -W 22:$Speed:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 32:80:b
$Address -W 32:$Speed:b
fi
fi
Line 119: Line 122:
fi
fi
sleep 1
sleep 1
done
done


Line 132: Line 135:


I think the code pretty much explains itself with the extra info I have given it. I used the push buttons as example of how it could be used.
I think the code pretty much explains itself with the extra info I have given it. I used the push buttons as example of how it could be used.
All the protocols can bee found in [[Motor protocol]].
All the protocols can been found in [[Motor protocol]].

Revision as of 13:17, 16 November 2015

2 Wheel controlled car

I made this on the Raspbery Pi for the stepper motor and for 'electric wheels'.

Stepper motor version

Hardware I used on my Raspberry Pi:

Programming:

  • Bash

3D printed wheels code

I made the wheels in OpenSCAD and let them be printed out on a 3d printer. The OpenSCAD code:

$fs=0.2; $fa=2;

module stepperas(d=5, l=25, t=3) 
{
  difference()
  {
    cylinder (r=d/2 , h=l);
translate ([t/2, -5, -1])   cube([10, 20, l+2]);
translate ([-t/2-10, -5, -1])  cube([10, 20, l+2]);

  }
} 

difference()
{
  union () {
    difference () {
      cylinder (r=60/2 ,h=12);
      translate ([0, 0, 1.5])
        cylinder (r=50/2, h=20);
    }
    cylinder (r=6,h=6);
  }  

  translate ([0, 0, -1]) 
    stepperas(5.2, 20, 3.2);
}

The full car just went to be a carton box, with everything attached to it with tieraps.

'Electric wheels' version

Hardware I used on my Raspberry Pi:

I also used some tieraps to attach the wheels on a board.

Programming:

  • Bash

Script:

#!/bin/bash

#Wheel A left forward
#Wheel B Right forward 

# X is forwards - Y is backwards
#Wheels at front
#20  A backwards
#21  A forwards
#22  A stop
#30  B backwards
#31  B forwards
#32  B stop
 
Address="bw_tool -I -D /dev/i2c-1 -a 90"
Speed="80"
Speed2="40"

while true; do
  BUTTON=`bw_tool -I -D /dev/i2c-1 -a 94 -R 30:b`

  if [ $BUTTON  = "20" ]; then
  #Car going forwards
  $Address -W 21:$Speed:b
  $Address -W 31:$Speed:b
  fi

  if [ $BUTTON  = "10" ]; then 
  #Car going backwards
  $Address -W 20:$Speed:b
  $Address -W 30:$Speed:b
 
  if [ $BUTTON  = "08" ]; then 
  #Car going left
  $Address -W 21:$Speed2:b
  $Address -W 31:$Speed:b
  fi

  if [ $BUTTON  = "04" ]; then 
  #Car going right
  $Address -W 21:$Speed:b
  $Address -W 31:$Speed2:b
  fi

  if [ $BUTTON  = "02" ]; then 
  #Car Stop AGAIN
  $Address -W 22:$Speed:b
  $Address -W 32:$Speed:b
  fi

  if [ $BUTTON  = "01" ]; then 
  exit
  fi

  sleep 1
done

Other movements:

#Spinning right
bw_tool -I -D /dev/i2c-1 -a 90 -W 20:80:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 31:80:b

#Spinning left
bw_tool -I -D /dev/i2c-1 -a 90 -W 21:80:b
bw_tool -I -D /dev/i2c-1 -a 90 -W 30:80:b

I think the code pretty much explains itself with the extra info I have given it. I used the push buttons as example of how it could be used. All the protocols can been found in Motor protocol.