int pinI1=8;//定义I1接口
int pinI2=9;//定义I2接口
int speedpin=11;//定义EA(PWM调速)接口
int pinI3=6;//定义I3接口
int pinI4=7;//定义I4接口
int speedpin1=10;//定义EB(PWM调速)接口
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
Serial.begin(9600);
pinMode(pinI1,OUTPUT);
pinMode(pinI2,OUTPUT);
pinMode(speedpin,OUTPUT);
pinMode(pinI3,OUTPUT);
pinMode(pinI4,OUTPUT);
pinMode(speedpin1,OUTPUT);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
pinMode(A3,OUTPUT);
pinMode(A4,OUTPUT);
pinMode(A5,OUTPUT);
}
void stop()//停止
{
digitalWrite(pinI4,HIGH);//使直流电机(右)制动
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,HIGH);//使直流电机(左)制动
digitalWrite(pinI2,HIGH);
}
void advance()//前进
{
analogWrite(speedpin,50);//输入模拟值进行设定速度
analogWrite(speedpin1,50);
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
}
void left()//左转
{
analogWrite(speedpin,60);//输入模拟值进行设定速度
analogWrite(speedpin1,60);
digitalWrite(pinI4,LOW);//使直流电机(右)逆时针转
digitalWrite(pinI3,HIGH);
digitalWrite(pinI1,LOW);//使直流电机(左)逆时针转
digitalWrite(pinI2,LOW);
}
void right()//右转
{
analogWrite(speedpin,60);//输入模拟值进行设定速度
analogWrite(speedpin1,60);
digitalWrite(pinI4,LOW);//使直流电机(右)顺时针转
digitalWrite(pinI3,LOW);
digitalWrite(pinI1,LOW);//使直流电机(左)顺时针转
digitalWrite(pinI2,HIGH);
}
void loop()
{
float cm;
digitalWrite(A3, HIGH);
digitalWrite(A4, HIGH);
digitalWrite(A5, HIGH);
digitalWrite(TrigPin, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
cm = pulseIn(EchoPin, HIGH) / 58.0; //将回波时间换算成cm
cm = (int(cm * 100.0)) / 100.0; //保留两位小数
Serial.print(cm);
Serial.print("cm");
Serial.println();
delay(20);
if (cm>=3 && cm<5){
digitalWrite(A3, LOW);
analogWrite(speedpin,30);
analogWrite(speedpin1,30);
right() ;}
if (cm>=5 && cm<=6){
digitalWrite(A4, LOW);
analogWrite(speedpin,30);
analogWrite(speedpin1,30);
advance(); }
if (cm>6 && cm<=10){
digitalWrite(A5, LOW);
analogWrite(speedpin,30);
analogWrite(speedpin1,30);
left();}
}