Robo India presents Line follower on Arduino Platform using motor shield and Phantom Chassis.
Where to Buy.
Buy on Amazon Prime – click here
Buy on Robo India – click here
1. Introduction:
A step by step guide for to make line follower on The Arduino Robotic Kit
1.2 Additional assembly guide to make Line Follower
The Arduino Robotic Kit comprises several parts. These parts come in sorted form in separate poly bags. Each poly bag is named. Following parts will be required to construct line follower on The Arduino Robotic Kit.
1. Basic Assembled robot of The Arduino Robotic Kit
2. IR sensors
3. IR sensor Screws and nuts
4. Screw driver
Follow the following guide to make line follower, please note that this tutorial is a sequel of basic robot assembly.
2. Connections
After assembling the robot make the connection as given in the following diagram. The Power Jumper on the motor shield works as Switch to motor it will be useful while debugging.
2.2 Testing motor Connection
It is difficult to find GND and positive supply terminal of motor. Transfer the following code to the Arduino Board. The robot should move in forward direction, if it not doing so, interchange the of the wire of motor. e.g. suppose left motor is rotating in back ward direction and right motor is rotating in forward direction then you have to interchange the wires of M3 terminal.
You may download this sketch from here.
//Robo India Line follower Tutorial // This codes runs robo int the forward direction. // Shield Pins Declaration int dataPin = 8; int latchPin = 12; int clockPin = 4; int en = 7; void setup() { pinMode(dataPin, OUTPUT); // Setting up the motor shield. pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(en, OUTPUT); digitalWrite(en, LOW); forward(); // This funtion for forward robot motion } void loop() { } void forward(void){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 3); digitalWrite(latchPin, HIGH); } void backward(void){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 164); digitalWrite(latchPin, HIGH); } void turn_left(void){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 161); digitalWrite(latchPin, HIGH); } void turn_right(void){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 38); digitalWrite(latchPin, HIGH); } void halt(void){ digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 32); digitalWrite(latchPin, HIGH); }
2.2 Programming Line Follower
Till the above step you have made all of the connection and your motors are connected to the correct terminals. The following programme is the line following programme.
It has following predefined function for robot motion-
1. forward() : forward movement of robot.
2. backward() : backward movement of robot.
3. turn_left() : for turning left.
4. turn_right(): for turning right.
5. halt() : for stopping robot.
You may download this sketch from here.
// Robo India Line Follower Tutorial. // declaring Shield int dataPin = 8; int latchPin = 12; int clockPin = 4; int en = 7; // declaring Sensor Pins. int LeftSensor = A1; int RightSensor = A0; int L_sensor_val = 0; // To store value from sensors. int R_sensor_val = 0; int threshold = 300; // Threshold value to distinguish black and white. void setup() { // setting up shield. pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); pinMode(en, OUTPUT); digitalWrite(en, LOW); } void loop() { L_sensor_val = analogRead(LeftSensor); // Reading Left sensor data R_sensor_val = analogRead(RightSensor); // Reading Right sensor data if(L_sensor_val<threshold && R_sensor_val>threshold) { // testing for left turn while (L_sensor_val<threshold && R_sensor_val>threshold){ turn_right(); L_sensor_val = analogRead(LeftSensor); R_sensor_val = analogRead(RightSensor); } } else if(L_sensor_val>threshold && R_sensor_val<threshold){ // tesing for right turn while (L_sensor_val>threshold && R_sensor_val<threshold){ turn_left(); L_sensor_val = analogRead(LeftSensor); R_sensor_val = analogRead(RightSensor); } } forward(); // Default movement is forward. } void forward(void){ // function for forward movement. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 3); digitalWrite(latchPin, HIGH); } void backward(void){ // function for forward movement. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 164); digitalWrite(latchPin, HIGH); } void turn_left(void){ // function for left turn. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 161); digitalWrite(latchPin, HIGH); } void turn_right(void){ // function for Right turn. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 38); digitalWrite(latchPin, HIGH); } void halt(void){ // function for stopping robot. digitalWrite(latchPin, LOW); shiftOut(dataPin, clockPin, LSBFIRST, 32); digitalWrite(latchPin, HIGH); }
once you have transferred this code to the the Arduino board. Your robot is ready to follow the line. Put the robot on a white line of thickness 25 – 30 mm. The back ground is to be black.
Line follower in action –
Resources:
You may buy this kit from here.
Robo India Motor Control Tutorial on Arduinio.
This motor shield is based on Adafruit Motor Shield. Resources can be found here.
Where to Buy.
Buy on Amazon Prime – click here
Buy on Robo India – click here
If you have any query please write us at support@roboindia.com
Thanks and Regards
Content Development Team
Robo India
http://roboindia.com