基于arduino單片機的尋跡小車程序源碼
所有資料51hei提供下載:
XunJin_c3cc3.zip
(921 Bytes, 下載次數: 38)
2017-11-3 14:17 上傳
點擊文件名下載附件
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);
- }}
復制代碼
|