This Line Following Robot is not doing any extra feature i.e. turning or rotating back. It will just simply move in the straight line. I have also posted a short video at the botton of this tutorials which will give you better idea of how this robot moves. You should first read this tutorial and design the basic robot and once you are successful in designing the basic Line Following Robot then you should have a look at my recent Project Line following Robotic Waiter in which I have designed a Robotic waiter which follows the line and also take turns on different tables. So, let's get started with Line Following Robot using Arduino.
#define motorL1 8 #define motorL2 9 #define motorR1 10 #define motorR2 11 #define PwmLeft 5 #define PwmRight 6 #define SensorR 2 #define SensorL 3 #define Sensor3 A0 #define Sensor4 A1 #define TableA A4 #define TableB A2 #define TableC A5 #define TableD A3 int OriginalSpeed = 200; int TableCount = 0; int TableCheck = 0; int RFCheck = 10; void setup() { Serial.begin (9600); pinMode(motorR1, OUTPUT); pinMode(motorR2, OUTPUT); pinMode(motorL1, OUTPUT); pinMode(motorL2, OUTPUT); pinMode(PwmLeft, OUTPUT); pinMode(PwmRight, OUTPUT); pinMode(SensorL, INPUT); pinMode(SensorR, INPUT); pinMode(Sensor3, INPUT); pinMode(Sensor4, INPUT); pinMode(TableA, INPUT); pinMode(TableB, INPUT); pinMode(TableC, INPUT); pinMode(TableD, INPUT); MotorsStop(); analogWrite(PwmLeft, 0); analogWrite(PwmRight, 0); delay(2000); // Serial.println("fghfg"); } void loop() { MotorsForward(); PIDController(); } void MotorsBackward() { digitalWrite(motorL1, HIGH); digitalWrite(motorL2, LOW); digitalWrite(motorR1, HIGH); digitalWrite(motorR2, LOW); } void MotorsForward() { digitalWrite(motorL1, LOW); digitalWrite(motorL2, HIGH); digitalWrite(motorR1, LOW); digitalWrite(motorR2, HIGH); } void MotorsStop() { digitalWrite(motorL1, HIGH); digitalWrite(motorL2, HIGH); digitalWrite(motorR1, HIGH); digitalWrite(motorR2, HIGH); } void MotorsLeft() { analogWrite(PwmLeft, 0); analogWrite(PwmRight, 0); digitalWrite(motorR1, HIGH); digitalWrite(motorR2, HIGH); digitalWrite(motorL1, LOW); digitalWrite(motorL2, HIGH); } void MotorsRight() { analogWrite(PwmLeft, 0); analogWrite(PwmRight, 0); digitalWrite(motorR1, LOW); digitalWrite(motorR2, HIGH); digitalWrite(motorL1, HIGH); digitalWrite(motorL2, HIGH); } void Motors180() { analogWrite(PwmLeft, 0); analogWrite(PwmRight, 0); digitalWrite(motorL1, HIGH); digitalWrite(motorL2, LOW); digitalWrite(motorR1, LOW); digitalWrite(motorR2, HIGH); } void PIDController() { if(digitalRead(SensorL) == HIGH){analogWrite(PwmRight, 250);analogWrite(PwmLeft, 0);} if(digitalRead(SensorR) == HIGH){analogWrite(PwmLeft, 250);analogWrite(PwmRight,0);} if((digitalRead(SensorL) == LOW) && (digitalRead(SensorR) == LOW)){analogWrite(PwmRight, 0);analogWrite(PwmLeft, 0);} }
JLCPCB – Prototype 10 PCBs for $2 (For Any Color)
China’s Largest PCB Prototype Enterprise, 600,000+ Customers & 10,000+ Online Orders Daily
How to Get PCB Cash Coupon from JLCPCB: https://bit.ly/2GMCH9w