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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STM32F103智能紅外循跡小車,包括完整碼盤測速,蔽障,等功能完美實現,庫函數編寫

[復制鏈接]
跳轉到指定樓層
樓主
ID:302936 發表于 2018-4-6 22:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
智能小車 尋跡、測速

單片機源程序如下:
  1. #include "stm32f10x.h"
  2. #include "CommonTypeDefine.h"
  3. #include "Wheel.h"
  4. #include <stdio.h>
  5. #include "LCD.h"


  6. int DELAY1[2]={5,60};
  7. static WheelVeer AaFLeftWheelVeer=positiveDirection;
  8. static WheelVeer AaFRightWheelVeer=positiveDirection;
  9. static char DirectionOfMotion=0; //運動方向 0正走 1反走
  10. static char AvoidanceStatus=0;  //0表示沒有在避障1、2、3、4、5、6、7分別代表避障的7個階段
  11. static char BarrierDirection=0;        //0表示沒有在避障1、2分別代表在左邊和右邊
  12. int AaFWheelVeerArray1[8]={2,0,-2,0,-2,0,2,0};
  13. int AaFWheelVeerArray2[8]={-2,0,2,0,2,0,-2,0};

  14. static char CarStatus=1;
  15. static int timeCounter=0;
  16. static int LCDtimeCounter=100;
  17. void AaFDelay(int);
  18. void doSometingelse(void);
  19. void show(void);
  20. void showLeft(void);
  21. void showRight(void);
  22. void CarControlInit()
  23. {
  24.     GPIO_InitTypeDef GPIO_InitStructure;
  25.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);

  26.         //LCD相關配置
  27.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
  28.           RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_SPI1, ENABLE);
  29.           LCD_Init();
  30.           LCD_Clr();
  31.     //蔽障中斷口線
  32.     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_3;
  33.     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  34.     GPIO_Init(GPIOA,&GPIO_InitStructure);       
  35.   
  36.     //小車尋跡口線配置
  37.     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_7|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;
  38.     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  39.     GPIO_Init(GPIOB,&GPIO_InitStructure);
  40.     GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;
  41.     GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
  42.     GPIO_Init(GPIOA,&GPIO_InitStructure);
  43.     NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x00000);
  44.     if (SysTick_Config(SystemCoreClock /100))
  45.     {
  46.        while (1);
  47.     }
  48.     NVIC_SetPriority(SysTick_IRQn, 0x0);
  49.     WheelInit(positiveDirection,(char)255);
  50. }
  51. void AvoidanceAndFollow()
  52. {
  53.         if(AvoidanceStatus==0)
  54.         {
  55.           if(DirectionOfMotion==0)
  56.           {
  57.             if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)==RESET)  //左邊有障礙物
  58.             {
  59.                 AvoidanceStatus=8;
  60.                 BarrierDirection=1;
  61.             }
  62.             else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)==RESET)  //右邊有障礙物
  63.             {
  64.                 AvoidanceStatus=8;
  65.                 BarrierDirection=2;
  66.             }
  67.             else if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)==RESET)&&(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==RESET)&&(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET))
  68.             {
  69.                 CarStatus=0;
  70.                 AaFLeftWheelVeer=stop;
  71.                 AaFRightWheelVeer=stop;       
  72.             }
  73.             else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_2)==RESET)  //黑線壓在右邊
  74.             {
  75.                 AaFLeftWheelVeer=positiveDirection;
  76.                 AaFRightWheelVeer=stop;       
  77.             }
  78.             else if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)==RESET)  //黑線壓在左邊
  79.             {
  80.                 AaFLeftWheelVeer=stop;
  81.                 AaFRightWheelVeer=positiveDirection;       
  82.             }
  83.             else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)==RESET)  //黑線壓在中間
  84.             {
  85.                 AaFLeftWheelVeer=positiveDirection;
  86.                 AaFRightWheelVeer=positiveDirection;       
  87.             }
  88.           }
  89.           else if(DirectionOfMotion==1)
  90.           {
  91.                   if((GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==RESET)&&(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==RESET)&&(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==RESET))
  92.             {
  93.                 CarStatus=0;
  94.                 AaFLeftWheelVeer=stop;
  95.                 AaFRightWheelVeer=stop;       
  96.             }
  97.             else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_15)==RESET)  //黑線壓在右邊
  98.             {
  99.                 AaFLeftWheelVeer=reverseDirection;
  100.                 AaFRightWheelVeer=stop;       
  101.             }
  102.             else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7)==RESET)  //黑線壓在左邊
  103.             {
  104.                 AaFLeftWheelVeer=stop;
  105.                 AaFRightWheelVeer=reverseDirection;       
  106.             }
  107.             else if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_14)==RESET)  //黑線壓在中間
  108.             {
  109.                 AaFLeftWheelVeer=reverseDirection;
  110.                 AaFRightWheelVeer=reverseDirection;       
  111.             }
  112.           }
  113.         }
  114.     timeCounter--;
  115. }
  116. void CarControl()
  117. {
  118.     while(1)
  119.     {
  120.                 while(CarStatus==1)
  121.                 {
  122.                    if(AvoidanceStatus>0)
  123.                    {
  124.                                 if(BarrierDirection==1)
  125.                                 {
  126.                                           TurnCar(AaFWheelVeerArray1[8-AvoidanceStatus]);
  127.                                 }
  128.                                 else if(BarrierDirection==2)
  129.                                 {
  130.                                         TurnCar(AaFWheelVeerArray2[8-AvoidanceStatus]);
  131.                                 }
  132.                                 if(AvoidanceStatus==5)
  133.                                 {
  134.                                         AaFDelay(120);
  135.                                 }
  136.                                 else
  137.                                 {
  138.                                         AaFDelay(DELAY1[AvoidanceStatus%2]);
  139.                                 }
  140.                                 AvoidanceStatus--;
  141.                                 AaFDelay(2);
  142.                    }
  143.                    else
  144.                    {
  145.                         WheelSetVeer(leftWheel,AaFLeftWheelVeer);
  146.                         WheelSetVeer(rightWheel,AaFRightWheelVeer);
  147.                         AaFDelay(1);
  148.                    }
  149.                    show();
  150.                 }
  151.                 WheelSetVeer(leftWheel,AaFLeftWheelVeer);
  152.                 WheelSetVeer(rightWheel,AaFRightWheelVeer);
  153.                 show();
  154.                 doSometingelse();

  155.     }
  156. }
  157. void AaFDelay(int t)
  158. {
  159.    timeCounter=t;
  160.    while(timeCounter);
  161. }
  162. void doSometingelse()
  163. {
  164.         AaFDelay(100);
  165.         if(DirectionOfMotion==0)
  166.         {
  167.            DirectionOfMotion=1;
  168.         }
  169.         else if(DirectionOfMotion==1)
  170.         {
  171.            DirectionOfMotion=0;
  172.         }
  173.         //Other
  174.         //TurnCar(left);
  175.         //TurnCar(left);
  176.         CarStatus=1;
  177. }
  178. void show()
  179. {
  180.         if(LCDtimeCounter==0)
  181.         {
  182.                 LCDtimeCounter=100;
  183.                 showLeft();
  184.                 showRight();
  185. ……………………

  186. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
智能紅外循跡小車,包括完整碼盤測速,蔽障,等功能完美實現,庫函數編寫,便于閱讀.rar (293.78 KB, 下載次數: 183)


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

使用道具 舉報

沙發
ID:344895 發表于 2018-7-18 10:16 | 只看該作者
為什么有錯啊
回復

使用道具 舉報

板凳
ID:267330 發表于 2018-10-22 16:39 | 只看該作者
在下載不了啊
回復

使用道具 舉報

地板
ID:267330 發表于 2018-10-24 09:42 | 只看該作者
復制,學習,別人的經驗
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美不卡 | 久久久久久久91 | 国产传媒视频在线观看 | 一区视频在线免费观看 | 成人av一区二区三区 | 国产精品看片 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 欧美日韩国产一区二区三区 | 91在线观看视频 | 精品久久香蕉国产线看观看亚洲 | 国产精品二区三区 | 国产成人精品久久久 | 亚州综合在线 | 99视频在线免费观看 | 情侣黄网站免费看 | 久久久www成人免费无遮挡大片 | 日韩欧美在线观看 | 亚洲免费人成在线视频观看 | 国产精品一级在线观看 | 在线不卡一区 | 黑人中文字幕一区二区三区 | 成人在线精品视频 | 欧美乱码精品一区二区三区 | 国产免费观看视频 | 精品国产1区2区3区 一区二区手机在线 | 欧美激情在线播放 | 91资源在线 | 久久亚洲国产精品日日av夜夜 | 久久综合狠狠综合久久综合88 | 国产一级久久久久 | 一区二区三区在线看 | 国产在线观看av | 伊人网综合在线观看 | 91极品尤物在线播放国产 | 精品国产久 | 一区二区三区视频 | 91亚洲一区 | 国产免费一区二区 | 色网在线观看 | 91久久夜色精品国产网站 | 欧美日本韩国一区二区 |