Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3967|回復: 2
打印 上一主題 下一主題

紅外線避障

[複製鏈接]
跳轉到指定樓層
1#
發表於 2012-3-12 22:01:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
現在沒有頭緒再用紅外線寫出避障的程式下面是試寫的,好像有問題
請教高手指教
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(); //停止

}
2#
發表於 2012-3-13 18:12:01 | 只看該作者
我很難想像沒有電路圖就直接寫程式, 這樣好嗎?
3#
發表於 2012-3-13 22:54:56 | 只看該作者
如果沒硬體,要不要先用RobotBASIC模擬過再說。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-15 00:04 , Processed in 0.443929 second(s), 9 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表