歡迎

歡迎來到這個部落格

2017年3月6日 星期一

2017/03/05研究日誌(45)完全找不到錯誤

這個禮拜我原本打算要把紅外線給搞定,然後就趕快進行車體的製作,不過我做了很久,還是找不到哪裡有錯。
首先,我其實在上個禮拜就寫完了,不過一直不能正常運作,所以暫時就沒有拿出來,可是到了這個禮拜,我還是寫不出來,所以我現在正在努力地進行修改並找出錯誤。我原本以為是示我沒有把前進的副程式放在迴圈中,不過後來我再看的時候,發現根本不是這個問題,而我也找不出原因,所以我把程式放在下面,如果會的人可以教我一下:(//後面的是註解)
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);  //4567腳位設為輸出
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){
  }
}

完全找不出來啊!!!不過也因為這樣,所以獨立研究也才會是一個有挑戰的事情,必須要繼續進行。

1 則留言:

2017/07/30 研究日誌(61) 慘痛的經驗

上完我上次說過的那堂課很久後,我終於要把我那一台機器車給裝在原本的板子了 !!! 再組裝時,因為我一開始的那個車體有很多零件是用熱熔膠黏的,所以在清膠時花了我不少的時間,清完後,我打算要從輪胎開始裝起,不過,這時候我要拆我的萬象輪 ( 就是一個大鋼球,旁邊會有小鋼球的那種 ...