#define m1 5 // Right Motor MA1 #define m2 4 // Right Motor MA2 #define m3 2 // Left Motor MB1 #define m4 3 // Left Motor MB2 #define e1 11 // Right Motor Enable Pin EA #define e2 10 // Left Motor Enable Pin EB //**********5 Channel IR Sensor Connection**********// #define ir1 A1 #define ir2 A2 #define ir3 A3 #define ir4 A4 #define ir5 A5 //*************************************************// int speed = 150; void setup() { pinMode(m1, OUTPUT); pinMode(m2, OUTPUT); pinMode(m3, OUTPUT); pinMode(m4, OUTPUT); pinMode(e1, OUTPUT); pinMode(e2, OUTPUT); pinMode(ir1, INPUT); pinMode(ir2, INPUT); pinMode(ir3, INPUT); pinMode(ir4, INPUT); pinMode(ir5, INPUT); Serial.begin(9600); Serial.println("Start"); delay(1000); } void loop() { // CarTest(); // //Reading Sensor Values int s1 = digitalRead(ir1); // Left Most Sensor int s2 = digitalRead(ir2); // Left Sensor int s3 = digitalRead(ir3); // Middle Sensor int s4 = digitalRead(ir4); // Right Sensor int s5 = digitalRead(ir5); // Right Most Sensor Serial.print(s1); Serial.print(" "); Serial.print(s2); Serial.print(" "); Serial.print(s3); Serial.print(" "); Serial.print(s4); Serial.print(" "); Serial.print(s5); Serial.print(" "); // delay(500); // print Froward , Right , Left in the serial monitor if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 1) && (s5 == 1)) { Serial.println("Forward"); } if((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 1)) { Serial.println("Forward"); } else if((s1 == 1) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1)) { Serial.println("Right"); } else if((s1 == 0) && (s2 == 1 && (s3 == 1) && (s4 == 1) && (s5 == 1))) { Serial.println("Right"); } else if((s1 == 0) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1)) { Serial.println("Right"); } else if ((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1)) { Serial.println("Right"); } else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1)) { Serial.println("Left"); } else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 0)) { Serial.println("Left"); } else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 0)) { Serial.println("Left"); } else if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 1)) { Serial.println("Left"); } else if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1)) { Serial.println("On All White"); } else { Serial.println("On All Black"); } delay(500); // //if only middle sensor detects black line // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 1) && (s5 == 1)) // { // //going forward with full speed // Forward(speed); // } // //if only left sensor detects black line // if((s1 == 1) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1)) // { // //going right with full speed // Right(speed); // } // //if only left most sensor detects black line // if((s1 == 0) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 1)) // { // //going right with full speed // Right(speed); // } // //if only right sensor detects black line // if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1)) // { // //going left with full speed // Left(speed); // } // //if only right most sensor detects black line // if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 0)) // { // //going left with full speed // Left(speed); // } // //if middle and right sensor detects black line // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 1)) // { // //going left with full speed // Left(speed); // } // //if middle and left sensor detects black line // if((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1)) // { // //going right with full speed // Right(speed); // } // //if middle, left and left most sensor detects black line // if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1)) // { // //going right with full speed // Right(speed); // } // //if middle, right and right most sensor detects black line // if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 0)) // { // //going left with full speed // Left(speed); // } // //if all sensors are on a black line // if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 0)) // { // //stop // Stop(); // } // delay(100); } void Forward(int speed) { analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255 analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255 digitalWrite(m1, HIGH); digitalWrite(m2, LOW); digitalWrite(m3, HIGH); digitalWrite(m4, LOW); } void Backward(int speed) { analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255 analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255 digitalWrite(m1, LOW); digitalWrite(m2, HIGH); digitalWrite(m3, LOW); digitalWrite(m4, HIGH); } void Right(int speed) { analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255 analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255 digitalWrite(m1, HIGH); digitalWrite(m2, LOW); digitalWrite(m3, LOW); digitalWrite(m4, LOW); } void Left(int speed) { analogWrite(e1, speed); // you can adjust the speed of the motors from 0-255 analogWrite(e2, speed); // you can adjust the speed of the motors from 0-255 digitalWrite(m1, LOW); digitalWrite(m2, LOW); digitalWrite(m3, HIGH); digitalWrite(m4, LOW); } void Stop() { digitalWrite(m1, LOW); digitalWrite(m2, LOW); digitalWrite(m3, LOW); digitalWrite(m4, LOW); } void CarTest() { Forward(150); delay(1000); Backward(150); delay(1000); Right(150); delay(1000); Left(150); delay(1000); Stop(); delay(1000); }