Facebook
From Expert TTA, 2 Months ago, written in C++.
This paste is a reply to Re: Line Follower from Expert TTA - view diff
Embed
Download Paste or View Raw
Hits: 218
  1. #define m1 5  //Right Motor MA1
  2. #define m2 4  //Right Motor MA2
  3. #define m3 2  //Left Motor MB1
  4. #define m4 3  //Left Motor MB2
  5. #define e1 11  //Right Motor Enable Pin EA
  6. #define e2 10 //Left Motor Enable Pin EB
  7.  
  8. //**********5 Channel IR Sensor Connection**********//
  9. #define ir1 A1
  10. #define ir2 A2
  11. #define ir3 A3
  12. #define ir4 A4
  13. #define ir5 A5
  14. //*************************************************//
  15.  
  16. int speed = 150;
  17.  
  18. void setup() {
  19.   pinMode(m1, OUTPUT);
  20.   pinMode(m2, OUTPUT);
  21.   pinMode(m3, OUTPUT);
  22.   pinMode(m4, OUTPUT);
  23.   pinMode(e1, OUTPUT);
  24.   pinMode(e2, OUTPUT);
  25.   pinMode(ir1, INPUT);
  26.   pinMode(ir2, INPUT);
  27.   pinMode(ir3, INPUT);
  28.   pinMode(ir4, INPUT);
  29.   pinMode(ir5, INPUT);
  30.  
  31.   CarTest();
  32. }
  33.  
  34. void loop() {
  35.   //Reading Sensor Values
  36.   int s1 = digitalRead(ir1);  //Left Most Sensor
  37.   int s2 = digitalRead(ir2);  //Left Sensor
  38.   int s3 = digitalRead(ir3);  //Middle Sensor
  39.   int s4 = digitalRead(ir4);  //Right Sensor
  40.   int s5 = digitalRead(ir5);  //Right Most Sensor
  41.  
  42.   //if only middle sensor detects black line
  43.   if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  44.   {
  45.     //going forward with full speed
  46.     Forward(speed);
  47.   }
  48.  
  49.   //if only left sensor detects black line
  50.   if((s1 == 1) && (s2 == 0) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  51.   {
  52.     //going right with full speed
  53.     Right(speed);
  54.   }
  55.  
  56.   //if only left most sensor detects black line
  57.   if((s1 == 0) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 1))
  58.   {
  59.     //going right with full speed
  60.     Right(speed);
  61.   }
  62.  
  63.   //if only right sensor detects black line
  64.   if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 0) && (s5 == 1))
  65.   {
  66.     //going left with full speed
  67.     Left(speed);
  68.   }
  69.  
  70.   //if only right most sensor detects black line
  71.   if((s1 == 1) && (s2 == 1) && (s3 == 1) && (s4 == 1) && (s5 == 0))
  72.   {
  73.     //going left with full speed
  74.     Left(speed);
  75.   }
  76.  
  77.   //if middle and right sensor detects black line
  78.   if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 1))
  79.   {
  80.     //going left with full speed
  81.     Left(speed);
  82.   }
  83.  
  84.   //if middle and left sensor detects black line
  85.   if((s1 == 1) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  86.   {
  87.     //going right with full speed
  88.     Right(speed);
  89.   }
  90.  
  91.   //if middle, left and left most sensor detects black line
  92.   if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 1) && (s5 == 1))
  93.   {
  94.     //going right with full speed
  95.     Right(speed);
  96.   }
  97.  
  98.   //if middle, right and right most sensor detects black line
  99.   if((s1 == 1) && (s2 == 1) && (s3 == 0) && (s4 == 0) && (s5 == 0))
  100.   {
  101.     //going left with full speed
  102.     Left(speed);
  103.   }
  104.  
  105.   //if all sensors are on a black line
  106.   if((s1 == 0) && (s2 == 0) && (s3 == 0) && (s4 == 0) && (s5 == 0))
  107.   {
  108.     //stop
  109.     Stop();
  110.   }
  111.  
  112.   delay(100);
  113. }
  114.  
  115. void Forward(int speed){
  116.   analogWrite(e1, speed); //you can adjust the speed of the motors from 0-255
  117.   analogWrite(e2, speed); //you can adjust the speed of the motors from 0-255
  118.   digitalWrite(m1, HIGH);
  119.   digitalWrite(m2, LOW);
  120.   digitalWrite(m3, HIGH);
  121.   digitalWrite(m4, LOW);
  122. }
  123.  
  124. void Backward(int speed){
  125.   analogWrite(e1, speed); //you can adjust the speed of the motors from 0-255
  126.   analogWrite(e2, speed); //you can adjust the speed of the motors from 0-255
  127.   digitalWrite(m1, LOW);
  128.   digitalWrite(m2, HIGH);
  129.   digitalWrite(m3, LOW);
  130.   digitalWrite(m4, HIGH);
  131. }
  132.  
  133. void Right(int speed){
  134.   analogWrite(e1, speed); //you can adjust the speed of the motors from 0-255
  135.   analogWrite(e2, speed); //you can adjust the speed of the motors from 0-255
  136.   digitalWrite(m1, HIGH);
  137.   digitalWrite(m2, LOW);
  138.   digitalWrite(m3, LOW);
  139.   digitalWrite(m4, LOW);
  140. }
  141.  
  142. void Left(int speed){
  143.   analogWrite(e1, speed); //you can adjust the speed of the motors from 0-255
  144.   analogWrite(e2, speed); //you can adjust the speed of the motors from 0-255
  145.   digitalWrite(m1, LOW);
  146.   digitalWrite(m2, LOW);
  147.   digitalWrite(m3, HIGH);
  148.   digitalWrite(m4, LOW);
  149. }
  150.  
  151. void Stop(){
  152.   digitalWrite(m1, LOW);
  153.   digitalWrite(m2, LOW);
  154.   digitalWrite(m3, LOW);
  155.   digitalWrite(m4, LOW);
  156. }
  157.  
  158.  
  159. void CarTest(){
  160.   Forward(150);
  161.   delay(1000);
  162.   Backward(150);
  163.   delay(1000);
  164.   Right(150);
  165.   delay(1000);
  166.   Left(150);
  167.   delay(1000);
  168.   Stop();
  169.   delay(1000);
  170. }