Step 8: Set the BaW-Bot Rolling

Now that we’ve finished with all the sensors, let’s get the BaW-Bot moving.  All you need to do now is to upload the sketch below and power the Bot up.

The logic in brief:
As the Bot approaches an obstacle, it slows down and pings the ultrasound more frequently.
When the Bot comes within 10cm (approx. 4 inches) of an obstacle it reverses and turns left.
When the left lever-switch activates it brakes, then reverses and turns right.
When the right lever-switch activates it brakes, then reverses and turns left.

Some comments on the sketch:
All reverse and turn manoeuvres are based on time, not distance – so depending on your motor speed and wheel diameter you may need to alter these.  I’m using slow motors and small wheels, so everything takes longer.

The ultrasound sensor doesn’t always give accurate readings, so I’ve used a simple algorithm I borrowed sometime in the past to calculate an average of 5 values – this smoothes the Bot’s behaviour to an extent.

The obstacle-avoidance logic is far from perfect – it’s meant as a basic platform to get the BaW-Bot running and is there to for you to build on – please share any clever algorithms you come up with!

The sketch is close to utilising the maximum available memory – if you add a whole bunch of variables and Serial.print commands for debugging, it will start overflowing and likely hang at odd moments.  There are ways around this – but that’s for another instructable.

The lever microswitches are connected to the Arduino pins that are interrupt-enabled.  You could expand the sketch by using interrupts to drive the behaviour when the lever-switches are activated.

Thanks for building this with me - please let me have any comments

Coming up next - blinging the BaW-Bot up a little.
Hi! <br>I'm wondering if it's possible to connect up the motor-controller to a Raspberry Pi, so the usage of an Arduino wouldn't be neccesary, because I have no access to one, but I have access to a RPi. <br> <br>Greetings from Germany! ;)
Hi <br> <br>I'm not really sure - as the Pi only has USB ports, you'd need: <br>- some way to turn a single USB port into multiple I/O channels to control the motor driver <br>- some way to address and program these multiple channels. <br> <br>I recommend you make the leap and get an Arduino - they go for about EUR24 and seriously will be worth it! Look at: http://arduino.cc/hu/Main/Buy <br> <br>Good luck <br>
Yeah I will definitely buy one, or build it with your great instrcution. <br>So the motor-controller only needs some I/O which can be programmed? <br> <br>That would be perfect, because the Pi has 26 GPIO Pins which can be programmed thorugh Python, C and other languages :) <br>http://elinux.org/RPi_Low-level_peripherals <br> <br>I'm nearly a beginner to these kind of electronics, so sorry if i ask too much..
OK then that should work OK - I see the Pi only tolerates 3.3V inputs. The motor driver takes 3V as well, so you should be ok. Check the datasheet at: <br>http://www.semicon.toshiba.co.jp/docs/datasheet/en/LinearIC/TB6612FNG_en_datasheet_080509.pdf <br> <br>Good luck - and make sure you post your results! <br> <br>P.S. keep asking - it's a steep learning curve (and I'm still struggling up it!)
One other thing to consider is the amperage of the motor. make sure you got enough current. It seems like the voltage is there, if not enough current you could adopt an arduino motor controller or H bridge to run off your 3 volts I would think. <br> <br>Let us know how it turns out, because im curious at all the possibilities of the Pi, Just a matter of time before I get mine! <br>Good day.
You can get arduino for much cheaper then that almost half that price shop around<br> I got my mini for $14 free shipping dollars.<br> MY Mega I got for 27 or 28 dollars free shipping.<br> <br> <a href="http://dx.com/p/arduino-compatible-component-basic-element-pack-starter-kit-130922?utm_rid=22337885&amp%3Butm_source=affiliate" rel="nofollow">My Uno in a kit for $50 FREE shipping and the kit came with:</a><br> ( This is my affiliat link but I truly think it is a good deal, they also have tons of other arduino related parts for very good prices, all with FREE shipping. )<br> - Package includes:<br> - 1 x Arduino UNO board<br> - 1 x Development expansion board<br> - 1 x Breadboard (10 X 20cm)<br> - 1 x Acrylic plate<br> - 1 x LED emitter kit (red / green / yellow; each 5pcs)<br> - 2 x Buzzer<br> - 4 x Push button switch<br> - 2 x Seven segments display<br> - 2 x Mercury switch<br> - 3 x Light dependent resistor<br> - 1 x Adjustable resistor<br> - 1 x Flame sensor<br> - 1 x Infrared receiver<br> - 1 x Resistor kit (200ohm / 1K ohm / 10K ohm; each 10pcs)<br> - 1 x LM35 temperature sensor<br> - 1 x USB cable (48cm)<br> - 20 x Breadboard cable<br> - 1 x 9V battery<br> - 1 x Battery slot<br> - 1 x Remote control (1 x LR1130 / included)<br> - 2 x Storage case (1-large / 1-small)<br> - 1 x Software CD<br> <br> The only thing to worry about is that once you start playing with arduino you cant go back! it will mack a great companion to your Pi. im waiting for my next invite, my first one the early sign up coupon, got lost in my spam box, and by the time I noticed, they were sold out&nbsp;&nbsp; $@#%!!!!!!

About This Instructable




Bio: I’m not a rocket scientist. I don’t have a master’s degree in Electrical Engineering. I love automating, hacking, robotics, creating, building, understanding ... More »
More by AndyTallack:Bootload an ATmega328 BaW-Bot Part 3: Adding Sight and Touch to the Bot BaW-Bot Part 2: Build the motor-controller & body 
Add instructable to: