
int PrintOk=1;//打印消息
// 红外状态信号
int pin_red_right = 8;
int pin_red_center = 9;
int pin_red_left = 10;
// 电机驱动引脚
int pin_Motor_RightA = 4;
int pin_Motor_RightB = 5;
int pin_Motor_LeftA = 6;
int pin_Motor_LeftB = 7;
int GoTime=10;//前进基本单位 ms
int GoTimeLR=10;
//停止
void Move_Stop(int timedo=1){
if(PrintOk)Serial.println("停止");
digitalWrite(pin_Motor_RightA,0);
digitalWrite(pin_Motor_RightB,0);
digitalWrite(pin_Motor_LeftA,0);
digitalWrite(pin_Motor_LeftB,0);
delay(timedo);
}
//前进
void Move_Qian(int timedo=1){
if(PrintOk)Serial.println("前进");
digitalWrite(pin_Motor_RightA,0);
digitalWrite(pin_Motor_RightB,1);
digitalWrite(pin_Motor_LeftA,0);
digitalWrite(pin_Motor_LeftB,1);
delay(timedo);
}
//后退
void Move_Back(int timedo=1){
if(PrintOk)Serial.println("后退");
digitalWrite(pin_Motor_RightA,1);
digitalWrite(pin_Motor_RightB,0);
digitalWrite(pin_Motor_LeftA,1);
digitalWrite(pin_Motor_LeftB,0);
delay(timedo);
}
//左转
void Move_Left(int timedo=1){
if(PrintOk)Serial.println("左转");
digitalWrite(pin_Motor_RightA,0);
digitalWrite(pin_Motor_RightB,1);
digitalWrite(pin_Motor_LeftA,1);
digitalWrite(pin_Motor_LeftB,0);
delay(timedo);
}
//右转
void Move_Right(int timedo=1){
if(PrintOk)Serial.println("右转");
digitalWrite(pin_Motor_RightA,1);
digitalWrite(pin_Motor_RightB,0);
digitalWrite(pin_Motor_LeftA,0);
digitalWrite(pin_Motor_LeftB,1);
delay(timedo);
}
void setup() {
Serial.begin(9600);
pinMode(pin_red_right, INPUT);
pinMode(pin_red_center, INPUT);
pinMode(pin_red_left, INPUT);
pinMode(pin_Motor_RightA, OUTPUT);
pinMode(pin_Motor_RightB, OUTPUT);
pinMode(pin_Motor_LeftA, OUTPUT);
pinMode(pin_Motor_LeftB, OUTPUT);
Move_Stop(1000);
//Move_Back(1000);
//Move_Qian(1000);
//Move_Left(1000);
//Move_Right(1000);
}
void loop() {
//读取信号 无障碍物1 有0
int State_Left = digitalRead(pin_red_left);
int State_Center = digitalRead(pin_red_center);
int State_Right = digitalRead(pin_red_right);
String StateMsg=String("")+State_Left+" "+State_Center+" "+State_Right;
Serial.println(StateMsg);
if(State_Left==1 && State_Center==1 && State_Right==1)
{
Serial.println("没有任何物体,前进");
Move_Qian(GoTime);
}
else if(State_Left==1 && State_Center==0 && State_Right==1)
{
Serial.println("正前有物体,停止");
Move_Stop(GoTime);
}
else if(State_Left==0 && State_Right==1)
{
Serial.println("左前有物体,左转");
Move_Left(GoTimeLR);
}
else if(State_Left==1 && State_Right==0)
{
Serial.println("右前有物体,右转");
Move_Right(GoTimeLR);
}
else{
Move_Stop(GoTime);
Serial.println("其他情况,停止");
}
//delay(1000);
}