#include<NewPing.h>
int a;
int b;
int Trig = 4;
int Echo = 5;
int input1 = 2; // 定义uno的pin 2 向 input1 输出
int input2 = 3; // 定义uno的pin 3 向 input2 输出
int input3 = 9; //定义uno的pin 9 向 input3 输出
int input4 = 10; // 定义uno的pin 10 向 input4 输出
void advance() //小车前进
{ digitalWrite(input1, HIGH);
digitalWrite(input2, LOW);
digitalWrite(input3, HIGH);
digitalWrite(input4, LOW);
}
void back() //小车后退
{ digitalWrite(input1, LOW);
digitalWrite(input2, HIGH);
digitalWrite(input3, LOW);
digitalWrite(input4, HIGH);
delay(1000);
}
void right() //小车右转
{
digitalWrite(input1, HIGH);
digitalWrite(input2, LOW);
digitalWrite(input3, LOW);
digitalWrite(input4, LOW);
delay(1000);
}
void left() //小车左转
{
digitalWrite(input1, LOW);
digitalWrite(input2, LOW);
digitalWrite(input3, HIGH);
digitalWrite(input4, LOW);
delay(1000);
}
void setup()
{
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
pinMode(input1, OUTPUT);
pinMode(input2, OUTPUT);
pinMode(input3, OUTPUT);
pinMode(input4, OUTPUT);
pinMode(A0, INPUT); //左边光敏电阻接A0
pinMode(A1, INPUT); //右边光敏电阻接A1
}
void loop() {
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
int distance = pulseIn(Echo, HIGH); //读出脉冲时间
int a = analogRead(A0); //读出左边光敏电阻的值
int b = analogRead(A1);//读出右边光敏电阻的值
if (distance > 100)
{ advance();
if (abs(a - b) < 100) //光敏电阻,左右光强超过这个差值再转
{
advance();
}
else
if (a < b) { //左边读数小于右边,左边光强大
left();
advance();
}
else { //右边读数小于左边,右边光强大
right();
advance();
}
}
else
{ back();
left();
advance();
if (abs(a - b) < 100)
{
advance();
}
else if (a < b) {
left();
advance();
}
else {
right();
advance();
}
}
}