這個禮拜我原本打算要把紅外線給搞定,然後就趕快進行車體的製作,不過我做了很久,還是找不到哪裡有錯。
首先,我其實在上個禮拜就寫完了,不過一直不能正常運作,所以暫時就沒有拿出來,可是到了這個禮拜,我還是寫不出來,所以我現在正在努力地進行修改並找出錯誤。我原本以為是示我沒有把前進的副程式放在迴圈中,不過後來我再看的時候,發現根本不是這個問題,而我也找不出原因,所以我把程式放在下面,如果會的人可以教我一下:(//後面的是註解)
int EN1=6; //由腳位6控制左輪轉速
int EN2=5; //由腳位5控制右倫轉速
int IN1=7; //由腳位7控制左輪轉向
int IN2=4; //由腳位4控制右輪轉向
int
pwm=150; //預設轉速
int Lpin=10;
int Rpin=11;
void setup(){
int i;
for(i=4;i<=7;i++)
pinMode(i,OUTPUT); //4、5、6、7腳位設為輸出
pinMode(Lpin,INPUT);
pinMode(Rpin,INPUT);
pinMode(3,OUTPUT);
}
void loop() {
byte
wLeft=digitalRead(Lpin);
byte
wRight=digitalRead(Rpin);
if((wLeft==0)&&(wRight==0)){
backward(1000);
turnLeft(800);
stay(0);
}else
if(wLeft==0){
backward(1000);
turnRight(400);
stay(0);
}else if(wRight==0){
backward(1000);
turnLeft(400);
stay(0);
}else{
forward(20);
}
}
void forward(int
time){
analogWrite(EN1,pwm);
digitalWrite(IN1,HIGH);
analogWrite(EN2,pwm);
digitalWrite(IN2,HIGH);
delay(time);
}
void turnLeft(int
time){
analogWrite(EN1,pwm);
digitalWrite(IN1,LOW);
analogWrite(EN2,pwm);
digitalWrite(IN2,HIGH);
delay(time);
}
void
turnRight(int time){
analogWrite(EN1,pwm);
digitalWrite(IN1,HIGH);
analogWrite(EN2,pwm);
digitalWrite(IN2,LOW);
delay(time);
}
void
backward(int time){
analogWrite(EN1,pwm);
digitalWrite(IN1,LOW);
analogWrite(EN2,pwm);
digitalWrite(IN2,LOW);
delay(time);
}
void stay(int
time){
analogWrite(EN1,0);
analogWrite(EN2,0);
delay(time);
while(time==0){
}
}
完全找不出來啊!!!不過也因為這樣,所以獨立研究也才會是一個有挑戰的事情,必須要繼續進行。