loading

This is a tutorial on how to make an Arduino robot that will wonder around and avoid walls and other obstacles. It is a very easy thing to do ands is based for beginners and to teach them and get them into robotics, it is fun to do, I know my dog loves this, it barks and chases it around the house.

(Sorry this isn't a very good instructable, this is my first one and still getting a hang of it.)

Step 1: Recourses

Collect your Items:

Arduino Uno or Mega: http://www.freetronics.com.au/products/eleven#.VZ... // uno link

H-Bridge Shield: http://www.freetronics.com.au/products/eleven#.VZ...

Ultra Sonic Sensor: http://www.freetronics.com.au/products/eleven#.VZ...

Chassis: http://www.freetronics.com.au/products/eleven#.VZ...

Batteries: I suggest 3 9v Batteries

Tools:

(you don't really need tools but maybe...)

Wire strippers

Soldering Iron

Pliers

Step 2: Wiring

Start with the Arduino Uno;

Put the H-Bridge shield on top; (Making sure that the pins are all in the right spots)

Connect the sensor to the shield, put the "trig" to pin 10: put the "echo" to pin 9: and then Gnd to GND and Positive to 5V;

Connect 2 9v batteries to shield; (Do it in a series circuit)

Add the 2 dc motors to the inputs;

Step 3: Putting on the Chassis

It should look something like this once it is done. The sensor should be at the front of the chassis. the Arduino behind it and then the battery packs behind the Arduino.

(sorry my chassis hasn't arrived yet)

Step 4: Code

Here is my code;

Please respect it took me time to write this;

//Code By Jason McLaughlin
//2015

const int channel_a_enable = 6;

const int channel_a_input_1 = 4;

const int channel_a_input_2 = 7;

const int channel_b_enable = 5;

const int channel_b_input_3 = 3;

const int channel_b_input_4 = 2;

#define trigPin 10

#define echoPin 9

void setup() {

pinMode(trigPin, OUTPUT);

pinMode(echoPin, INPUT);

pinMode( channel_a_enable, OUTPUT ); // Channel A enable

pinMode( channel_a_input_1, OUTPUT ); // Channel A input 1

pinMode( channel_a_input_2, OUTPUT ); // Channel A input 2

pinMode( channel_b_enable, OUTPUT ); // Channel B enable

pinMode( channel_b_input_3, OUTPUT ); // Channel B input 3

pinMode( channel_b_input_4, OUTPUT ); // Channel B input 4

Serial.begin( 9600 );

Serial.println("Starting up"); }

void loop() {

//Ping/Ultra Sonic Sensor

int duration, distance;

digitalWrite(trigPin, HIGH);

delayMicroseconds(1000);

digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);

distance = (duration / 2) / 29.1;

Serial.print(distance);

Serial.println(" cm");

delay(0);

//Forwards

if(distance>5) {Serial.println("forwards :)");

analogWrite( channel_a_enable, 255);

digitalWrite( channel_a_input_1, HIGH);

digitalWrite( channel_a_input_2, LOW);

analogWrite( channel_b_enable, 255);

digitalWrite( channel_b_input_3, HIGH);

digitalWrite( channel_b_input_4, LOW);

delay(50);

allInputsOff();}

else if(distance<5)

{ }

else {Serial.println("Channel A Idle");

analogWrite( channel_a_enable, 0);

digitalWrite( channel_a_input_1, LOW);

digitalWrite( channel_a_input_2, LOW);

delay(50);

allInputsOff();}

if(distance<5)

{Serial.println("Turing");

analogWrite( channel_a_enable, 255);

digitalWrite( channel_a_input_1, LOW);

digitalWrite( channel_a_input_2, HIGH);

analogWrite( channel_b_enable, 255);

digitalWrite( channel_b_input_3, HIGH);

digitalWrite( channel_b_input_4, LOW);

delay(50);

allInputsOff();}

else if (distance>5) { }

else

{Serial.println("Channel A reverse Idle");

analogWrite( channel_a_enable, 0);

digitalWrite( channel_a_input_1, LOW);

digitalWrite( channel_a_input_2, LOW);

delay(50);

allInputsOff();}

}

void allInputsOff()

{

digitalWrite( 4, LOW );

digitalWrite( 7, LOW );

digitalWrite( 6, LOW );

digitalWrite( 3, LOW );

digitalWrite( 2, LOW );

digitalWrite( 5, LOW );

}

<p>do you have a test video</p>
<p>Can you provide any specs on the motors?</p><p><br>Thanks</p>
<p>sure, </p><p>Max Motor Voltage: 6v <br>No Load Speed: 90 &plusmn; 10rpm<br>No Load Current: 190mA (Max.250mA)<br>Torque: 800gf.cm<br>Stall Current: ~ 1A<br>Wheel Dimensions: 25mm x 60mm<br>Length: 174mm<br>Width: 110mm</p>
<p>Wow, this is a very good instructble, in my opinion. It is rather complete, with wiring diagram, good looking picture and code. And it looks that you have used components that are widely avialble and not too expensive. Thanks for this one.</p>
<p>Thank you for the feedback</p>
<p>Wondering? What is the Arduino wondering about today.</p>

About This Instructable

3,131views

47favorites

License:

Bio: I love the song Come Get Your Love
More by JaceDuino :How to control motors with Arduino and RC receiver in 10 minutes How to control Arduino with RC receiver in 10 minutes Easy Arduino Light following Robot 
Add instructable to: