基于arduino单片机的寻迹小车程序源码
所有资料51hei提供下载:
XunJin_c3cc3.zip
(921 Bytes, 下载次数: 38)
arduino源程序如下:
- //R是右(right),L是左(left)小车对着自己看时分的左右
- int IN1=10;
- int IN2=11;//左轮
- int IN3=12;
- int IN4=13;//右轮
- const int SensorLeft1=A3;//左感測器輸入腳
- const int SensorLeft2=A4;
- const int SensorRight1=A6;//右感測器輸入腳
- const int SensorRight2=A5;
- const int ENA=6;
- const int ENB=5;
- int SL1;
- int SL2;//左感測器狀態
- int SR1;
- int SR2;//右感測器狀態
- void setup()
- {
- Serial.begin(9600);
- pinMode(IN1,OUTPUT);
- pinMode(IN2,OUTPUT);
- pinMode(IN3,OUTPUT);
- pinMode(IN4,OUTPUT);
- pinMode(SensorLeft1,INPUT);
- pinMode(SensorLeft2,INPUT);
- pinMode(SensorRight1,INPUT);
- pinMode(SensorRight2,INPUT);
- }
- void loop()
- {
- SL1=digitalRead(SensorLeft1);
- SL2=digitalRead(SensorLeft2);
- SR1=digitalRead(SensorRight1);
- SR2=digitalRead(SensorRight2);
- if (SL1==LOW &&SL2==LOW&& SR1==LOW&& SR2==LOW)//前进
- {
- analogWrite(ENA,150);
- analogWrite(ENB,150);
- digitalWrite(IN1,HIGH);//IN1左电机高电平正转
- digitalWrite(IN2,LOW);//IN2左电机高电平反转
- digitalWrite(IN3,HIGH);//IN3右电机高电平反转
- digitalWrite(IN4,LOW);//IN4右电机高电平正转
- }
- else // R是右(right),L是左(left)小车对着自己看时分的左右
- if (SL1==HIGH&&SL2==HIGH&&SR1==LOW&&SR2==LOW)//左白右黑,快速左转
- {
- delay(1);
- analogWrite(ENA,150);
- analogWrite(ENB,150);
- digitalWrite(IN1,HIGH);//IN3左电机高电平正转
- digitalWrite(IN2,LOW);//IN4左电机高电平反转
- digitalWrite(IN3,LOW);//IN1右电机高电平反转
- digitalWrite(IN4,HIGH);//IN2右电机高电平正转
- }
- else
- if (SL1==LOW&SL2 == LOW&SR1 == HIGH&SR2==HIGH) //左黑右白,快速右转
- {delay(1);
- analogWrite(ENA,150);
- analogWrite(ENB,150);
- digitalWrite(IN1,LOW);//IN3左电机高电平正转
- digitalWrite(IN2,HIGH);//IN4左电机高电平反转
- digitalWrite(IN3,HIGH);//IN1右电机高电平反转
- digitalWrite(IN4,LOW);//IN2右电机高电平正转
- }
- else
- if (SL1==HIGH&&SL2==LOW&&SR1==LOW&&SR2==LOW)//左白右黑,慢速左转
- {
- delay(1);
- analogWrite(ENA,100);
- analogWrite(ENB,100);
- digitalWrite(IN1,HIGH);//IN3左电机高电平正转
- digitalWrite(IN2,LOW);//IN4左电机高电平反转
- digitalWrite(IN3,LOW);//IN1右电机高电平反转
- digitalWrite(IN4,HIGH);//IN2右电机高电平正转
- }
- else
- if (SL1==LOW&SL2 == LOW&SR1 == LOW&SR2==HIGH) //左黑右白,慢速右转
- {delay(1);
- analogWrite(ENA,100);
- analogWrite(ENB,100);
- digitalWrite(IN1,LOW);//IN3左电机高电平正转
- digitalWrite(IN2,HIGH);//IN4左电机高电平反转
- digitalWrite(IN3,HIGH);//IN1右电机高电平反转
- digitalWrite(IN4,LOW);//IN2右电机高电平正转
- }
- else//都是白色, 停止
- {
- analogWrite(ENA,0);
- analogWrite(ENB,0);
- digitalWrite(IN1,LOW);
- digitalWrite(IN2,LOW);
- digitalWrite(IN3,LOW);
- digitalWrite(IN4,LOW);
- }}
复制代码
|