各位大神 新手上路,求指导,求赐教,
两路红外循迹代码如下
int MotorRight1=14;
int MotorRight2=15;
int MotorLeft1=16;
int MotorLeft2=17;
const int SensorLeft = 2; //左感测器输入脚
const int SensorRight = 6; //右感测器输入脚
int SL; //左感测器状态
int SR; //右感测器状态
void setup()
{
Serial.begin(9600);
pinMode(MotorRight1, OUTPUT); // 脚位 14 (PWM)
pinMode(MotorRight2, OUTPUT); // 脚位 15 (PWM)
pinMode(MotorLeft1, OUTPUT); // 脚位 16 (PWM)
pinMode(MotorLeft2, OUTPUT); // 脚位 17 (PWM)
pinMode(SensorLeft, INPUT); //定义左感测器
pinMode(SensorRight, INPUT); //定义右感测器
}
void loop()
{
SL = digitalRead(SensorLeft);
// SM = digitalRead(SensorMiddle);
SR = digitalRead(SensorRight);
if (SL == LOW&&SR==LOW)//
{
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
analogWrite(MotorRight1,30);
analogWrite(MotorRight2,0);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
analogWrite(MotorLeft1,30);
analogWrite(MotorLeft2,0);
}
else //
{
if (SL == HIGH & SR == LOW)// 左黑右白, 快速左转
{
delay(1);
digitalWrite(MotorRight1,HIGH);
digitalWrite(MotorRight2,LOW);
analogWrite(MotorRight1,30);
analogWrite(MotorRight2,0);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);
}
else if (SR == HIGH & SL == LOW) // 左白右黑, 快速右转
{
delay(1);
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,HIGH);
digitalWrite(MotorLeft2,LOW);
analogWrite(MotorLeft1,30);
analogWrite(MotorLeft2,0);
}
else // 都是白色, 停止
{
digitalWrite(MotorRight1,LOW);
digitalWrite(MotorRight2,LOW);
digitalWrite(MotorLeft1,LOW);
digitalWrite(MotorLeft2,LOW);;
}}}
|