Robofun 機器人論壇

標題: 紅外線避障 [打印本頁]

作者: mjm2246    時間: 2012-3-12 22:01
標題: 紅外線避障
現在沒有頭緒再用紅外線寫出避障的程式下面是試寫的,好像有問題
請教高手指教
int IR_right=9;//定義右側避障傳感器接口
int IR_left=8;//定義左側避障傳感器接口
int E_right =5; //連接電機1的使能端口到數字接口5
int M_right =4; //連接電機1的轉向端口到數字接口4
int E_left = 6;//連接電機2的使能端口到數字接口6
int M_left=7; //連接電機2的轉向端口到數字接口5
int Right=0;
int Left=0;
int pwm_a = 3;  
int pwm_b = 11;
void setup()
{
   //給各數字接口設置輸入輸出狀態   
   pinMode (M_right, OUTPUT);
   pinMode(E_right, OUTPUT);
   pinMode(M_left, OUTPUT);
   pinMode(E_left, OUTPUT);
   pinMode(IR_right,INPUT);
   pinMode(IR_left, INPUT);
   analogWrite(pwm_a, 100);  
   analogWrite(pwm_b, 100);


}
void advance()//前進
{
    digitalWrite(M_right,HIGH);

   digitalWrite(M_left,HIGH);

}
void back()//後退
{
  digitalWrite(M_right,HIGH);

     digitalWrite(M_left,LOW);

}
void right()//右轉
{
    digitalWrite(M_right,LOW) ;

   digitalWrite(M_left,HIGH);
   ;
}
void left()//左 ??轉
{
     digitalWrite(M_right,HIGH);

     digitalWrite(M_left,LOW);

}
void Stop()//停止
{
     digitalWrite(E_right, LOW); //右電機停
     digitalWrite(E_left, LOW); //左電機停
}
void loop()
{

   //讀紅外蔽障傳感器的信號
    Right=digitalRead(IR_right);
    Left=digitalRead(IR_left);
    //左右為高電位
    if(Right==HIGH && Left==HIGH)
    advance(); //前進
    //如果左紅外低電平,左邊有障礙
    if(Right==HIGH && Left==LOW )
    right(); //右轉
    //如果左紅外為低電平,左邊有障礙
    if(Right==LOW && Left==HIGH )
    left(); //左轉
    if(Right==HIGH && Left==LOW)
    Stop(); //停止

}
作者: pizg    時間: 2012-3-13 18:12
我很難想像沒有電路圖就直接寫程式, 這樣好嗎?
作者: g921002    時間: 2012-3-13 22:54
如果沒硬體,要不要先用RobotBASIC模擬過再說。




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2