1024手机基地看电影,午夜福利视频导航,国产精品福利在线一区,亚洲欧美日韩另类成人,在线观看午夜日本理论片,成年超爽免费网站,国产精品成人免费,精品动作一级毛片,成人免费观看网站,97精品伊人久久大香蕉

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2618|回復: 1
打印 上一主題 下一主題
收起左側

超聲波避障代碼

[復制鏈接]
跳轉到指定樓層
樓主
ID:163821 發表于 2018-7-28 13:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void app_ultrasonic_mode(void)
{
        int Len = 0;

        Len = bsp_getUltrasonicDistance();
       
        //printf("CSB:%d", Len);         

        if(Len < 25)//數值為碰到障礙物的距離,可以按實際情況設置   
    {
          Len = (u16)bsp_getUltrasonicDistance();
      while(Len < 25)//再次判斷是否有障礙物,若有則轉動方向后,繼續判斷
      {   
                  Car_Stop();//停車   
        Car_SpinRight(3600, 3600);
                delay_ms(300);
        Len = (u16)bsp_getUltrasonicDistance();
      }
    }
    else
        {
                Car_Run(3600); //無障礙物,直行                 
        }
       
}

/**
* Function       app_ultrasonic_servo_mode
* @author        liusen
* @date          2017.07.20   
* @brief         超聲波避障
* @param[in]     void
* @param[out]    void
* @retval        void
* @par History   無
*/
void app_ultrasonic_servo_mode(void)
{
        int Len = 0;
        int LeftDistance = 0, RightDistance = 0;

        Len = (u16)bsp_getUltrasonicDistance();

    if(Len <= 30)//當遇到障礙物時
    {

                Car_Stop();//停下來做測距
               
                Angle_J1 = 180;                // 左邊
                delay_ms(500); //等待舵機到位
                Len = bsp_getUltrasonicDistance();                       
                LeftDistance = Len;          
         
                Angle_J1 = 0;                // 右邊
                delay_ms(500); //等待舵機到位
                Len = bsp_getUltrasonicDistance();                                       
                RightDistance = Len;


                Angle_J1 = 90;                //歸位
                delay_ms(500); //等待舵機到位

                if((LeftDistance < 22 ) &&( RightDistance < 22 ))//當左右兩側均有障礙物靠得比較近
                {
                        Car_SpinRight(6000, 5000);//旋轉掉頭
                        delay_ms(500); //等待舵機到位
                }
                else if(LeftDistance >= RightDistance)//左邊比右邊空曠
                {      
                        Car_SpinLeft(6000, 5000);//左轉
                        delay_ms(500); //等待舵機到位
                }
                else//右邊比左邊空曠
                {
                        Car_SpinRight(6000, 5000); //右轉
                        delay_ms(500); //等待舵機到位
                }
    }
    else if(Len > 30)//當遇到障礙物時
    {
                Car_Run(5000);          //無障礙物,直行     
    }
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:375359 發表于 2018-8-2 12:10 | 只看該作者
贊一個,很好
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

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