aboutsummaryrefslogtreecommitdiff
path: root/doc/Lesson 5 Line Tracking Car/Line_tracking_car/Line_tracking_car.ino
blob: d3dc7739e013d4c2ab193fb1452420c5afa7a3fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
//www.elegoo.com
//2016.09.12

int in1=9;
int in2=8;
int in3=7;
int in4=6;
int ENA=10;
int ENB=5;
 int ABS=130;
 void _mForward()
{
  analogWrite(ENA,ABS);
  analogWrite(ENB,ABS);
  digitalWrite(in1,LOW);
  digitalWrite(in2,HIGH);
  digitalWrite(in3,LOW);
  digitalWrite(in4,HIGH);
  Serial.println("go forward!");
}

void _mBack()
{
  analogWrite(ENA,ABS);
  analogWrite(ENB,ABS);
  digitalWrite(in1,HIGH);
  digitalWrite(in2,LOW);
  digitalWrite(in3,HIGH);
  digitalWrite(in4,LOW);
  Serial.println("go back!");
}

void _mleft()
{
   analogWrite(ENA,ABS);
   analogWrite(ENB,ABS);
   digitalWrite(in1,LOW);
   digitalWrite(in2,HIGH);
   digitalWrite(in3,HIGH);
   digitalWrite(in4,LOW);
   Serial.println("go left!");
}

void _mright()
{
   analogWrite(ENA,ABS);
   analogWrite(ENB,ABS);
   digitalWrite(in1,HIGH);
   digitalWrite(in2,LOW);
   digitalWrite(in3,LOW);
   digitalWrite(in4,HIGH);
   Serial.println("go right!");
} 
void _mStop()
{
   digitalWrite(ENA,LOW);
   digitalWrite(ENB,LOW);
   Serial.println("Stop!");
} 

void setup() 
{
  Serial.begin(9600);
}

void loop() {
  int num1,num2,num3;
  num1=digitalRead(11);    
  num2=digitalRead(4);
  num3=digitalRead(2); 
   if((num1==0)&&num2&&num3) 
   {
    _mleft();          //The sensor detected that right car turn left immediately when it meets black line 
    delay(2);
    while(1){
    num2=digitalRead(2);         //Cycle to judge degree of intermediate sensor,
    if(num2==1)
    {  _mleft();                     //If num2==1 does not go to the middle position, continue to turn left.
     delay(2);}
     else
     break;                      //Detection of num2==0 instructions turned over, out of the loop, detection of three sensors’ statusand then make appropriate action
   }                                       //The following and so on
   }    

  else if(num2&&num1&&(num3==0))
   {
    _mright();
    delay(2);
    while(1)
    {
     num2=digitalRead(2);
    if(num2==1){
      _mright();  
     delay(2);}
     else
      break;
    }
   }
  else
  {
    _mForward(); 
    delay(2);
  } 
}