Introduction: Arduino Wandering Robot (Improvised)

Picture of Arduino Wandering Robot (Improvised)

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

Picture of 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

Picture of 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

Picture of 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 );

}

Comments

miniscientist (author)2015-08-22

do you have a test video

SpecialRobotBuilders (author)2015-07-06

Can you provide any specs on the motors?


Thanks

sure,

Max Motor Voltage: 6v
No Load Speed: 90 ± 10rpm
No Load Current: 190mA (Max.250mA)
Torque: 800gf.cm
Stall Current: ~ 1A
Wheel Dimensions: 25mm x 60mm
Length: 174mm
Width: 110mm

Hackerstore (author)2015-07-03

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.

JaceDuino (author)Hackerstore2015-07-04

Thank you for the feedback

TheArduinoGuy (author)2015-07-04

Wondering? What is the Arduino wondering about today.

About This Instructable

3,279views

48favorites

License:

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