久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2226|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

電機運轉(zhuǎn)代碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:200161 發(fā)表于 2017-5-13 02:07 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "motor.h"
#include "uart.h"
#include "timer.h"
#include "mem.h"
uchar Cruising_Flag =0x00;
uchar  Robots_Run_Status;
uchar Pre_Cruising_Flag = 0x00;
extern uint16 se_timer[8];
/**電機初始化**/
void Motor_Init(void)
{
        MOTOR_A_EN=1;
        MOTOR_B_EN=1;
        MOTOR_GO_STOP;
}
//跟隨模式
void Follow_Track(void)
{
                  switch(Robots_Run_Status)
                 {
                        case 0x01:MOTOR_GO_RIGHT;     break;   
                        case 0x02:MOTOR_GO_LEFT;     break;          
                        case 0x03:MOTOR_GO_FORWARD;  break;          
                        case 0x04:MOTOR_GO_STOP;  break;       
                 }

               
             if(Input_Detect1 == 1)        //中間傳感器OK
                  {
                  
                           if((Input_Detect0 == 0)&& (Input_Detect2 == 0)) //兩邊同時探測到障礙物
                        {
                       
                                 Robots_Run_Status=0x04;//停止
                        }
                         
                        if((Input_Detect0 == 0)&& (Input_Detect2 == 1))//左側(cè)障礙物
                        {
                       
                                Robots_Run_Status=0x01;//右轉(zhuǎn)
                        }
               
                        if((Input_Detect0 == 1)&& (Input_Detect2 == 0))//右側(cè)障礙物
                        {
                                Robots_Run_Status=0x02;//左轉(zhuǎn)
                        }
                         
                        if((Input_Detect0 == 1)&& (Input_Detect2 == 1))//無任何障礙物
                        {
                                Robots_Run_Status=0x03;//直行
                        }
                  }
                  else
                  {
                             Robots_Run_Status=0x04;
                  }

}
//巡線模式
void FollowLine(void)
{
                   switch(Robots_Run_Status)
                 {
                        case 0x01:MOTOR_GO_RIGHT;     break;   
                        case 0x02:MOTOR_GO_LEFT;     break;          
                        case 0x03:MOTOR_GO_FORWARD;  break;          
                        case 0x04:MOTOR_GO_STOP;  break;       
                 }

                           if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 0))//兩邊同時探測到障礙物
                        {
                       
                                 Robots_Run_Status=0x03;//直行
                        }
                         
                        if((Input_Detect_LEFT == 0)&& (Input_Detect_RIGHT == 1))//右側(cè)遇到障礙  
                        {
                       
                                Robots_Run_Status=0x02;//左轉(zhuǎn)
                        }
               
                        if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 0))//左側(cè)遇到障礙
                        {
                                Robots_Run_Status=0x01;//右轉(zhuǎn)
                        }
                         
                        if((Input_Detect_LEFT == 1)&& (Input_Detect_RIGHT == 1))//左右都檢測到,就如視頻中的那樣遇到一道橫的膠帶
                        {
                                Robots_Run_Status=0x04;//停止
                        }
}
//避障模式
void Avoiding(void)
{
                    switch(Robots_Run_Status)
                 {
                        case 0x01:MOTOR_GO_RIGHT;     break;   
                        case 0x02:MOTOR_GO_LEFT;     break;          
                        case 0x03:MOTOR_GO_FORWARD;  break;          
                        case 0x04:MOTOR_GO_STOP;  break;
                        case 0x05:MOTOR_GO_BACK; break;                  
                 }

                           if((Input_Detect_LEFT == 1) || (Input_Detect_RIGHT == 1) || (Input_Detect1==0))
                        {
                    
                                Robots_Run_Status=0x04;
                        }
                        else //否則電機執(zhí)行前進(jìn)動作
                        {
                                  Robots_Run_Status=0x03;
                        }
}
//手臂動作展示
void ARMShow(void)
{

        se_timer[0]=100;
        Delay_Ms(1000);
        se_timer[1]=70;
        Delay_Ms(1000);
        se_timer[2]=60;
        Delay_Ms(1000);
        se_timer[3]=50;
        Delay_Ms(1000);

        se_timer[3]=81;
        Delay_Ms(1000);
        se_timer[2]=160;
        Delay_Ms(1000);
        se_timer[1]=120;
        Delay_Ms(1000);
        se_timer[0]=140;
        Delay_Ms(1000);
}

//手臂動作展示
void HeadShow(void)
{
         Beep=~Beep;
        se_timer[7]=170;
        Delay_Ms(1000);

        se_timer[7]=0;
        Delay_Ms(1000);
}

//發(fā)送超聲波
void Send_wave(void)
{
    uint16 i;

        Trig = 1;
        for(i=0;i<150;i++);
        Trig = 0;
}
//獲得距離值
uchar Get_Distance(void)
{
    uint32 Distance = 0;

    Send_wave();
    TH1 = 0;
    TL1 = 0;
        while(TH1<250 && Echo!= 1);          
        if(TH1 <= 250)        //測距范圍<0.5M
        {
           TH1 = 0;
           TL1 = 0;
           while(Echo == 1);
           Distance = TH1;
           Distance = Distance*256;
           Distance = Distance + TL1;
           Distance = Distance * 17;
           Distance = Distance / 22118;
           return (uchar)(Distance&0xFF);
        }
}
//通過雷達(dá)避障
void AvoidByRadar(void)
{
   if(Get_Distance()<0x0A)//如果雷達(dá)回波數(shù)據(jù)小于10厘米觸發(fā)
        {
                 MOTOR_GO_STOP;
        }
        else
        {
          MOTOR_GO_FORWARD;
        }

}
void Send_Distance(void)
{
           UART_send_byte(0xFF);
           UART_send_byte(0x03);
           UART_send_byte(0x00);
           UART_send_byte(Get_Distance());
           UART_send_byte(0xFF);
           Delay_Ms(1000);   
}
//模式執(zhí)行子函數(shù),根據(jù)標(biāo)志位進(jìn)行判斷
void Cruising_Mod(void)
{

         if(Pre_Cruising_Flag != Cruising_Flag)
         {
             if(Pre_Cruising_Flag != 0)
                 {
                     MOTOR_GO_STOP;
                 }

             Pre_Cruising_Flag =  Cruising_Flag;
         }       

        switch(Cruising_Flag)
        {
           case 0x01:Follow_Track(); break;//跟隨模式
           case 0x02:FollowLine(); break;//巡線模式
           case 0x03:Avoiding(); break;//避障模式
           case 0x04:AvoidByRadar();break;//超聲波壁障模式
           case 0x05:ARMShow();break;
           case 0x06:HeadShow();break;
           default:break;
        }         
}


void Delay_ForBarrier(uint32 t)
{  
    uint16 i;
        while(t--)
        {
           for(i=0;i<1050;i++);
        }
}








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

使用道具 舉報

沙發(fā)
ID:699251 發(fā)表于 2020-3-25 23:59 | 只看該作者
return (uchar)(Distance&0xFF);這句為啥會報錯
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人免费视频观看视频 | 免费看a| 国产在线精品一区二区三区 | 国产伦精品一区二区三区四区视频 | 国产福利在线 | 久久久久国产精品午夜一区 | 亚洲午夜电影 | 91麻豆精品国产91久久久久久 | 视频在线亚洲 | 欧美aa在线 | 久久精品久久久 | 在线观看中文字幕 | 青娱乐一区二区 | 欧美一区二区三区视频 | 在线观看亚洲 | 一区二区三区四区在线免费观看 | 国产精品精品视频一区二区三区 | 精品在线观看一区二区 | 美女视频一区 | 91九色网站 | 欧美日韩精品一区二区三区四区 | 久久精品在线免费视频 | 日韩91在线 | 在线观看黄色电影 | 免费av手机在线观看 | 国产精品久久久免费 | 91精品国产综合久久精品 | 美女在线观看av | 五月婷婷丁香 | 亚洲精品国产精品国自产在线 | 97免费视频在线观看 | 日韩在线国产 | 国产日韩一区二区三免费高清 | 色婷婷亚洲国产女人的天堂 | 超碰在线亚洲 | 天天干天天爱天天 | 欧美午夜精品久久久久久浪潮 | 国产欧美一区二区三区在线看 | 国产高清视频一区 | 精品视频一区二区三区在线观看 | 日韩欧美综合在线视频 |