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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3816|回復: 3
收起左側

循跡小車調試不出來,一直跑,用的12v的電機,怎么回事

[復制鏈接]
ID:510072 發表于 2019-5-25 19:00 | 顯示全部樓層 |閱讀模式
#ifndef _LED_H_
#define _LED_H_
        //控制板跳線帽接法

    //定義小車驅動模塊輸入IO口
sbit IN1=P1^0;           //  右1電機           高電平前進
sbit IN2=P1^1;           //  右1電機     高電平后退        可以改接成PWM輸出
sbit IN3=P1^2;           //  右2電機     高電平后退
sbit IN4=P1^3;           //  右2電機     高電平前進        可以改接成PWM輸出
sbit IN5=P1^4;           //  左1電機     高電平前進
sbit IN6=P1^5;           //  左1電機     高電平后退        可以改接成PWM輸出
sbit IN7=P1^6;           //  左2電機     高電平后退
sbit IN8=P1^7;           //  左2電機     高電平前進        可以改接成PWM輸出

        /***蜂鳴器接線定義*****/
    sbit BUZZ=P2^6;

        //傳感器定義 R是右(right),L是左(left)          小車對著自己看時 分的左右
    //循跡傳感器X 左P3.6  右P3.5
        #define Left_X_led        P3_6         //P3_6接左邊 紅外循跡傳感器 接第3路輸出信號即中控板上面標記為P3
        #define Right_X_led       P3_5         //P3_5接右邊 紅外循跡傳感器 接第2路輸出信號即中控板上面標記為P2

        //避障傳感器B 左P3.7  右P3.4  
        #define Left_B_led        P3_7         //P3_7接左邊 紅外避障傳感器 接第4路輸出信號即中控板上面標記為P4
        #define Right_B_led       P3_4         //P3_4接右邊 紅外避障傳感器 接第1路輸出信號即中控板上面標記為P1
               
        //電機PWM調速度IO口定義
        #define Left_moto_pwm            P0_0         //PWM信號端
        #define Left_moto_pwm1          P0_1       
        #define Right_moto_pwm          P0_2
        #define Right_moto_pwm1          P0_3                                                                 
        //電機轉向定義                                                         
        #define Left_moto_go      {IN5=1,IN6=0,IN7=0,IN8=1;}     //左邊兩個電機向前走
        #define Left_moto_Stop    {IN5=0,IN8=0;}    //左邊兩個電機停轉
                                    
        #define Right_moto_go     {IN1=1,IN2=0,IN3=0,IN4=1;}        //右邊兩個電機向前走
        #define Right_moto_Stop   {IN1=0,IN4=0;}        //右邊兩個電機停轉   
        //定義變量
        unsigned char pwm_val_left  =0;//變量定義
        unsigned char push_val_left =0;// 左電機占空比N/10
        unsigned char pwm_val_right =0;
        unsigned char push_val_right=0;// 右電機占空比N/10
        bit Right_moto_stop=1;
        bit Left_moto_stop =1;
        unsigned  int  time=0;

/************************************************************************/       
//延時函數       
   void delay(unsigned int k)
{   
     unsigned int x,y;
         for(x=0;x<k;x++)
           for(y=0;y<2000;y++);
}
/************************************************************************/
//前速前進
     void  run(void)
{
     push_val_left=4;         //速度調節變量 0-9。。。9最小,0最大
         push_val_right=4;
         Left_moto_go ;   //左電機往前走
         Right_moto_go ;  //右電機往前走
}



//左轉
     void  leftrun(void)
{         
     push_val_left=4;
         push_val_right=4;
         Left_moto_go ;   //左電機往前走
//         Right_moto_back ;  //右電機往前走
}

//右轉
     void  rightrun(void)
{
         push_val_left=4;
         push_val_right=4;
//         Left_moto_back ;   //左電機往前走
         Right_moto_go ;  //右電機往前走
}


/************************************************************************/
/*                    PWM調制電機轉速                                   */
/************************************************************************/
/*                    左電機調速                                        */
/*調節push_val_left的值改變電機轉速,占空比            */
                void pwm_out_left_moto(void)
{  
   if(Left_moto_stop)
   {
    if(pwm_val_left<=push_val_left)
               {
                     Left_moto_pwm=1;
                     Left_moto_pwm1=1;
                   }
        else
               {
                 Left_moto_pwm=0;
                     Left_moto_pwm1=0;
                   }
        if(pwm_val_left>=10)
               pwm_val_left=0;
   }
   else   
          {
           Left_moto_pwm=0;
           Left_moto_pwm1=0;
                  }
}
/******************************************************************/
/*                    右電機調速                                  */  
   void pwm_out_right_moto(void)
{
  if(Right_moto_stop)
   {
    if(pwm_val_right<=push_val_right)
              {
               Right_moto_pwm=1;
                   Right_moto_pwm1=1;
                   }
        else
              {
                   Right_moto_pwm=0;
                   Right_moto_pwm1=0;
                  }
        if(pwm_val_right>=10)
               pwm_val_right=0;
   }
   else   
          {
           Right_moto_pwm=0;
           Right_moto_pwm1=0;
              }
}

/***************************************************/
///*TIMER0中斷服務子函數產生PWM信號*/
        void timer0()interrupt 1   using 2
{
     TH0=0XFc;          //1Ms定時
         TL0=0X18;
         time++;
         pwm_val_left++;
         pwm_val_right++;
         pwm_out_left_moto();
         pwm_out_right_moto();
}       

/*********************************************************************/       

#endif
#include<AT89X52.H>                  //包含51單片機頭文件,內部有各種寄存器定義
        #include<HJ-4WD_PWM.H>                  //包含HJ-4WD藍牙智能小車驅動IO口定義等函數

//主函數
        void main(void)
{       

        unsigned char i;
    P1=0X00;          //小車停止

                         TMOD=0X01;
                TH0= 0XFc;                  //1ms定時
                 TL0= 0X18;
                   TR0= 1;
                ET0= 1;
                EA = 1;


        while(1)        //無限循環
        {
         
                         //有信號為0  沒有信號為1

              if(Left_X_led==0&&Right_X_led==0)         //白線

                          run();

                          else
                         {                          
                                               if(Left_X_led==0&&Right_X_led==1)            //左邊檢測到紅外
                                  {
                       
                                 Left_moto_go;                                                   //左邊兩個電機正轉
                                 Right_moto_Stop;
                                 
                             }
                          
                                                             if(Right_X_led==0&&Left_X_led==1)                //右邊檢測到紅外
                                  {          
               
                              Right_moto_go;                                           //右邊兩個電機正轉

                                  Left_moto_Stop;
                                  }
                        }         
         }
}

回復

使用道具 舉報

ID:510072 發表于 2019-5-25 19:01 | 顯示全部樓層
不知道是程序的問題還是怎么回事,速度也很快
回復

使用道具 舉報

ID:418269 發表于 2019-5-26 14:16 | 顯示全部樓層
本帖最后由 ≯叁界∝爵ャ 于 2019-5-26 20:58 編輯

else
                         {                          
                                               if(Left_X_led==0&&Right_X_led==1)            //左邊檢測到紅外
                                  {
                        
                                 Left_moto_go;                                                   //左邊兩個電機正轉
                                 Right_moto_Stop;
                                 
                             }
                           
                                                             if(Right_X_led==0&&Left_X_led==1)                //右邊檢測到紅外
                                  {         
               
                              Right_moto_go;                                           //右邊兩個電機正轉

                                  Left_moto_Stop;
                                  }
                        }         
是不是這里出了問題?,一直左轉,或右轉。當小車Irsensor檢查到黑線后,本應該本側電機停止,另一邊電機轉動。但這樣會不會因為慣性,在調整姿態時,就已經沖出跑道了?
回復

使用道具 舉報

ID:418269 發表于 2019-5-26 14:19 | 顯示全部樓層
這樣試試看:  else
                         {                          
                                               if(Left_X_led==0&&Right_X_led==1)            //左邊檢測到紅外
                                  {
                        
                                 Left_moto_go;                                                   //左邊兩個電機正轉
                                 Right_moto_Stop;
                                Delay10us();
                                 Left_moto_Stop;

                           
                             }
                           
                                                             if(Right_X_led==0&&Left_X_led==1)                //右邊檢測到紅外
                                  {         
               
                              Right_moto_go;                                           //右邊兩個電機正轉

                                  Left_moto_Stop;
                                  Delay10us();
                                   Right_moto_Stop;

                                  }
                        }         
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久热在线精品视频观看 | 日韩一区二区三区视频 | 日韩欧美在线视频 | 欧美成年网站 | 秋霞性生活 | 欧美日韩精品一区二区 | 99精品久久久久久久 | av在线播放一区二区 | 欧美全黄| 性做久久久久久免费观看欧美 | 颜色网站在线观看 | 欧洲尺码日本国产精品 | 久久噜噜噜精品国产亚洲综合 | 午夜精品一区 | 久久久久久高潮国产精品视 | 亚洲精品成人av久久 | 国产欧美精品一区二区 | 亚洲成人av | 2020国产在线 | 精品一区二区三区91 | 国产精品69毛片高清亚洲 | 天天综合久久 | 精品福利在线 | 97操操 | 在线观看av中文字幕 | 超碰在线人人干 | 91精品国产一区二区在线观看 | 亚洲一区在线日韩在线深爱 | 中文字幕一区在线观看视频 | 在线观看中文字幕亚洲 | 在线不卡一区 | 午夜免费网站 | 欧美成人黄色小说 | 亚洲精品二区 | 久久精品国产一区 | 久久久久国| 亚洲三区在线观看 | 亚洲国产精品一区二区第一页 | 日本福利视频免费观看 | 日韩1区 | 色吧色综合 |