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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于STM32單片機智能跟隨小車_紅外遙控程序原理圖PCB

[復制鏈接]
跳轉到指定樓層
樓主
附件有全部內容
Altium Designer畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)


單片機源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"       
  5. #include "timer.h"
  6. #include "adc.h"
  7. #include "remote.h"   
  8. #include "hx711.h"
  9. #include <string.h>

  10. u8 Model=0; //模式
  11. u8 PWM_WIDTH=28;  
  12. u8 RunModel=0;

  13. void Hw_Process()
  14. {
  15.   u8 key;
  16.                
  17.         key=Remote_Scan();       
  18.         if(key)
  19.                 {
  20.                         Beep=1;
  21.                         delay_ms(100);        //延時300ms
  22.                         Beep=0;                       
  23.                         printf("\r\n紅外鍵值= %d\r\n",key);
  24.                 }
  25.    
  26.                    
  27. if(key==224)// - :進入 自由遙控避障模式               
  28.                 {
  29.      RunModel=0;
  30.                 }
  31. else if(key==168)// - :進入 跟隨模式               
  32.    {
  33.            RunModel=1;
  34.          }
  35. if(RunModel==0) //自由遙控避障模式,遙控控制
  36.   {
  37.    if(key==194)// 暫停 >||
  38.                         {
  39.                            Model=0;
  40.                                  
  41.                                  printf("\r\n停止\r\n");//
  42.                         }                         
  43.           else if(key==34)//|<<
  44.                         {
  45.                            Model=4;
  46.                                  delay_ms(500);        //延時300ms
  47.                                  Model=1;
  48.                                  
  49.                                  printf("\r\n左\r\n");//
  50.                         }
  51.                         else if(key==2) //>>|
  52.                         {
  53.                            Model=3;
  54.                                  delay_ms(500);        //延時300ms
  55.                                  Model=1;
  56.                    
  57.                                  printf("\r\n右\r\n");//
  58.                         }
  59.                         else if(key==162) //CH-
  60.                         {
  61.                            Model=1;
  62.                                  
  63.                                  printf("\r\n前進\r\n");//
  64.                         }
  65.                         else if(key==98) //CH
  66.                         {
  67.                            Model=2;
  68.                  
  69.                                  printf("\r\n后退\r\n");//
  70.                         }                               
  71.                         else if(key==48)  // 按下鍵1
  72.                         {
  73.                            PWM_WIDTH=40;
  74.                          
  75.                                  printf("\r\n1檔\r\n");//
  76.                         }
  77.                         else if(key==24)  // 按下鍵2
  78.                         {
  79.                             PWM_WIDTH=35;
  80.                                   
  81.                                  printf("\r\n2檔\r\n");//
  82.                         }       
  83.                         else if(key==122)  // 按下鍵3
  84.                         {
  85.                            PWM_WIDTH=28;

  86.                                  printf("\r\n3檔\r\n");//
  87.                         }                               

  88.   }
  89. }  
  90. int main(void)
  91. {       
  92.          u16 adcx;
  93.        
  94.          unsigned long adtemp,adtemp1;
  95.          u16 Weight=0;
  96.         u16 temp1,temp2;
  97.         delay_init();                     //延時函數初始化          
  98.          LED_Init();                          //初始化與LED連接的硬件接口

  99.           
  100.         uart_init(9600);
  101.   //uart2_init(9600);
  102.         TIM3_Int_Init(10,5199);//10Khz的計數頻率,計數到10為1ms   控制小車方向及速度
  103.   CH_SR04_Init();//超聲波設置初始化
  104.         Remote_Init();                        //紅外接收初始化         
  105.         //ADInit();
  106.         Beep=1;
  107.         delay_ms(100);        //延時300ms
  108.   Beep=0;
  109.         delay_ms(100);        //延時300ms
  110.         Beep=1;
  111.         delay_ms(100);        //延時300ms
  112.   Beep=0;
  113.         printf("\r\n-----------------------------------------------\r\n");//
  114.         adtemp=HX711_Read();  //先讀取皮重對應的AD。注意:上電前 稱重盤上不能放任何物品,以免造成測量不準。
  115.         Model=0;
  116.                         
  117.                 while(1)
  118.                 {         


  119.      Hw_Process();//紅外遙控處理
  120.                 if(RunModel==0) //自由遙控避障模式,遙控控制 +超聲波避障
  121.                 {  
  122.        temp1=Senor_Using_Left()*10;
  123.                          printf("\r\n左方距離= %d cm",temp1);//串口打印出電壓信息
  124.        temp2=Senor_Using_Right()*10;
  125.                          printf("右方距離= %d cm\r\n",temp2);//串口打印出電壓信息                       
  126.                          if((temp1<250||temp2<250)&&Model==1)//前方障礙太近,需要避障
  127.                          {
  128.                                  Model=0;
  129.                                  delay_ms(300);        //延時300ms
  130.                                  Model=2;//后退
  131.                                  delay_ms(300);        //延時300ms
  132.                            Model=4;//右轉
  133.                                  delay_ms(300);        //延時300ms
  134.                                  Model=1;//前進
  135.                          }
  136.                 }
  137.         else if(RunModel==1) //進入自動跟隨模式
  138.           {
  139.                         adtemp1=HX711_Read();  
  140.                         if(adtemp1>adtemp) //判斷檢測到AD大于皮重時,認為有物體放置。
  141.                         {
  142.                          Weight=(adtemp1-adtemp)*0.002388;   //根據串口調試該系數計算過程為:200g ÷(8494856(放置200g物體對應Ad值)-8411097(無物體放置時輸出AD值))
  143.                          printf("\r\n 重量=%d g\r\n",Weight);
  144.                         }       
  145.           if(Weight>500)//如果重物大于 500g  蜂鳴器報警。不跟隨
  146.                   {
  147.                           Beep=1;
  148.                                 delay_ms(300);        //延時300ms
  149.                                 Beep=0;
  150.                                 delay_ms(300);        //延時300ms
  151.                         }
  152.           else
  153.                   {
  154.                                   
  155.                       temp1=Senor_Using_Left()*10;
  156.                             printf("\r\n左方距離= %d cm",temp1);//串口打印出電壓信息
  157.           temp2=Senor_Using_Right()*10;
  158.                             printf("右方距離= %d cm\r\n",temp2);//串口打印出電壓信息               
  159.                          
  160.                                   if((temp1<200)||(temp2<200))  // 200= 20cm   左右有一方小于20cm
  161.                                                                         {
  162.                                                                                            Model=0;//停止
  163.                                                                         }
  164.                                                                 else   if((temp1>1000)&&(temp2>1000))
  165.                                                                  {
  166.                                                                               printf("\r\n停止\r\n");
  167.                                                                                                 Model=0;//
  168.                                                                  }
  169.                 else if((temp1<1000)&&(temp2<1000))
  170.                                                                 {
  171.                                                                     printf("\r\n前進\r\n");
  172.                                                                           Model=1;//
  173.                                                                     delay_ms(300);        //延時300ms
  174.                                                                        
  175.                                                                        
  176.                                                                                         if(temp1>temp2) //說明此時 小車車頭相對人偏左,應讓小車向右拐彎
  177.                                                                                         {

  178.                                                                                                 Model=3;//右轉
  179.                                                                                                 printf("\r\n右轉\r\n");
  180.                                                                                                 delay_ms(200);        //延時300ms
  181.                                                                                                        //
  182.                                                                                         }
  183.                                                                                         else if(temp2>temp1)//說明此時 小車車頭相對人偏右,應讓小車向左拐彎       
  184.                                                                                         {

  185.                                                                                                 Model=4;//左轉
  186.                                                                                                 printf("\r\n左轉\r\n");
  187.                                                                                                 delay_ms(200);        //延時300ms
  188.                                                                                                  
  189.                                                                                         }
  190.                                                                 }                                                                       
  191.                           Model=0;//
  192.                                  
  193.                   }
  194.           }

  195.                        
  196.                  
  197.                 }
  198. }
復制代碼

Keil代碼和原理圖PCB下載:
本人初學,僅供參考,還存在一些錯誤和不足之處,請大家回帖多多指教,切勿照搬,文件下載:
原理圖和程序.7z (1.9 MB, 下載次數: 45)


評分

參與人數 1黑幣 +10 收起 理由
admin + 10 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一级爱爱片| 国产亚洲网站 | 亚洲国产成人精品女人久久久野战 | 一级美国黄色片 | 欧美日韩亚洲视频 | 国产一区二区三区四区在线观看 | 日韩一区二区在线视频 | 精品成人佐山爱一区二区 | 91九色视频 | 久久大香| 亚洲成人免费电影 | 久久欧美高清二区三区 | 国产欧美日韩在线 | 久草视频在线播放 | 狠狠综合久久av一区二区小说 | 国产一区二区三区四区在线观看 | 久久精品国产99国产 | 久草资源在线视频 | 亚洲精品影院 | 一区二区三区在线电影 | 精品一二三 | 国产精品久久久久久久久久久久久久 | 精品日韩在线 | 四虎影院在线观看av | 少妇特黄a一区二区三区88av | 日韩中文字幕在线播放 | 日本a∨精品中文字幕在线 亚洲91视频 | 久久综合成人精品亚洲另类欧美 | 一区二区视屏 | 日韩欧美在线观看视频 | 午夜伦理影院 | 盗摄精品av一区二区三区 | 色精品 | 欧美二区三区 | 日韩在线免费视频 | 中文字幕国产一区 | 国产精品久久精品 | 99re6在线视频| 精品一区在线看 | 91精品国产综合久久精品 | 日韩中文字幕视频 |