Introduction: Ligth Follower Arduino Based Robot

Picture of Ligth Follower Arduino Based Robot

This is my very first robot, a ligth follower Robot

1. Tamiya caterpillar kit
2. Tamiya twin gearbox
3. Arduino Diecimila
4. H bridge L293e
5. 8 Diodes
6. Bread board
7. 2 Photo resistance
8 lot of wires

the Source Code:

int pinMotorL1=2;
int pinMotorL2=3;
int pinMotorR1=8;
int pinMotorR2=9;
int pinEnableL = 4;
int pinEnableR = 5;
int valPWM = 175;

void setup()
{
// begin the serial communication
Serial.begin(9600);
pinMode(pinMotorL1, OUTPUT);
pinMode(pinMotorL2, OUTPUT);
pinMode(pinMotorR1, OUTPUT);
pinMode(pinMotorR2, OUTPUT);
pinMode(pinEnableL, OUTPUT);
pinMode(pinEnableR, OUTPUT);
}

void ForwardR(){
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,HIGH);
digitalWrite(pinMotorR2,LOW);
}
void ForwardL(){
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,HIGH);
digitalWrite(pinMotorL2,LOW);

}
void BackwardR(){
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,LOW);
digitalWrite(pinMotorR2,HIGH);

}
void BackwardL(){
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,LOW);
digitalWrite(pinMotorL2,HIGH);
}
void StopR(){
digitalWrite(pinEnableR,valPWM);
digitalWrite(pinMotorR1,HIGH);
digitalWrite(pinMotorR2,HIGH);

}
void StopL(){
digitalWrite(pinEnableL,valPWM);
digitalWrite(pinMotorL1,HIGH);
digitalWrite(pinMotorL2,HIGH);
}

void StopAll(){
StopR();
StopL();
}

void goForward(){
ForwardR();
ForwardL();
}

void goBackward(){
BackwardR();
BackwardL();
}

void TurnR(){
ForwardL();
BackwardR();
}
void TurnL(){
ForwardR();
BackwardL();
}

void move(byte val){
if(val==0){
// Serial.println("Caso 0-Adelante");

goForward();
delay(1000);
StopAll();

}else
if(val==1){
// Serial.println("Caso 1-Atras");

goBackward();
delay(1000);
StopAll();
}else
if(val==2){
// Serial.println("Caso 2-Derecha");

TurnR();
delay(1000);
StopAll();

}else
if(val==3){
//Serial.println("Caso 3-Izquierda");

TurnL();
delay(1000);
StopAll();

}
else{
//Serial.println("no valido ninguno");
goForward();
delay(1000);
StopAll();
}
}

void loop()
{
float ojoDerecho = analogRead(1);
float ojoIzquierdo = analogRead(0);

//adelante
move(0);
//Derecha
if(ojoDerecho > ojoIzquierdo){
move(2);
}
//Izquierda
else if(ojoIzquierdo > ojoDerecho){
move(3);
}

}

Comments

amando96 (author)2009-02-01

that was nice, waiting for the video! i'm trying to make a minibot with two 555's that follows light :) in theory it will work... i just have to see in reality xD

Chowmix12 (author)amando962010-05-08

i have seen a photovore(light seeking) with only one 555 timer. what is the nned for 2?

Chowmix12 (author)Chowmix122010-06-02

i also made a very similar light seeking robot, except, mine uses a 555 timer chip instead of arduino.. it also has a reverse relay.. for a lot cheaper...

mnova (author)Chowmix122011-04-17

Is there an instructable for this?

Chowmix12 (author)mnova2011-04-17

Check out my I'ble on an Arduino based Light Seeker.

mnova (author)Chowmix122011-04-17

I do not have a Arduino board. I was trying to do this with just a 555 timer and LDRs.

Chowmix12 (author)mnova2011-04-17

Check out this video.

Chowmix12 (author)mnova2011-04-17

Then there isn't much to it than just the circuit above.

s.gosiaco (author)Chowmix122010-06-28

I tried to make that with a pot to fine tune it and it doesn't work. Can you please help me.

Chowmix12 (author)s.gosiaco2010-06-28

what seems to be the problem? are the motors running?

s.gosiaco (author)Chowmix122010-07-03

It won't follow the light

Chowmix12 (author)s.gosiaco2010-07-03

very discriptive... are the motors reacting to the sensors at all? if yes, try crossing the CdS cells. . if no, then try removing the potentiometer, and use the schematic above...

helloworld1 (author)amando962009-05-28

what do the 555's (the timers right?) actually do, and could i make a digital clock with one of them?

amando96 (author)helloworld12009-05-28

they time intervals sort of, and no you couldnt because you can never get an interval that is equal to one second, it would become wrong in like 5 minutes... you can use an RTC wich is a real time clock, that counts second, minutes, hours etc... every computer has one in the motherboard, thats why it has that small coin cell there :D they are cheap, so get one!! :D

helloworld1 (author)amando962009-05-29

oh cool, do you have any idea how you would wire that up to an lcd and some sort of microcontroller to be able to set it?

amando96 (author)helloworld12009-05-29

actually i do, i know a tutorial online, but its in portuguese, you can translate it on that google thingy though...

here .
http://lusorobotica.com/index.php/topic,681.msg6091.html#msg6091

good luck, i havent tryed it yet, but my arduino has little memory.....

helloworld1 (author)amando962009-07-31

ok thanks

edson04 (author)2010-04-09

Hi, which diode you use? and i bought the H brige l293e but its not the same i have 20 pin and in yours you have 16 pin and when i make the circuit with the diode i got a short court .. need some help please

kurtbadelt (author)2009-02-04

well after all this waiting here is the video:
https://www.instructables.com/id/Arduino_based_ligth_follower_robot/

hope you enjoy :).
it works.

kurtbadelt (author)2009-01-03

sure, im working on a video :)

Alcreion (author)2009-01-02

can you upload i a video?

About This Instructable

6,330views

11favorites

License:

More by kurtbadelt:Arduino based light follower robotLigth Follower Arduino Based Robot
Add instructable to: