找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2199|回复: 3
收起左侧

基于红外传感技术的STM32智能车程序

[复制链接]
ID:485392 发表于 2019-4-2 13:30 | 显示全部楼层 |阅读模式
设计一种集红外遥控、 黑线循迹、自动泊车、车速检测、行驶路程显示等功能于一体的智能车。主要使用了红外传感技术,并结合 STM32F103 系列芯片,模拟现代新型汽车的自动驾驶功能。 采用槽型对射光电传感器测量智能车车速,使用红外光对管进行障碍物检测, TFT LCD 彩屏模拟汽车的仪表盘,并显示智能车的各项数据,如驾驶模式、 行驶距离、车速等。使用红外遥控器对智能车进行操控,并且控制多种模式的自由切换。
  1. #include "led.h"
  2. #include "key.h"
  3. #include "delay.h"
  4. #include "sys.h"
  5. #include "lcd.h"
  6. #include "usart.h"     
  7. #include "remote.h"
  8. #include "beep.h"
  9. #include "motor_control.h"

  10. int main(void)
  11. {     
  12.     u8 key;
  13.     u8 t=0;   
  14.      u8 *str=0;

  15.     delay_init();             //延时函数初始化      
  16.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  17.     uart_init(115200);         //串口初始化为115200
  18.      LED_Init();                 //LED端口初始化
  19.     LCD_Init();
  20.     Beep_Init();
  21.     Remote_Init();            //红外接收初始化            
  22.     GPIO_Configuration();//电机
  23.     Control_GPIOC_Config();//传感器
  24.      
  25.      POINT_COLOR=RED;        //设置字体为红色
  26.     LCD_ShowString(30,50,200,16,16,"STM32 CAR");
  27.     LCD_ShowString(30,70,200,16,16,"REMOTE CAR");   
  28.      LCD_ShowString(30,90,200,16,16,"SPEED: ");

  29.     LCD_ShowString(30,130,200,16,16,"KEYVAL:");   
  30.     LCD_ShowString(30,150,200,16,16,"KEYCNT:");   
  31.     LCD_ShowString(30,170,200,16,16,"SYMBOL:");                                                               
  32.     while(1)
  33.     {
  34.         key=Remote_Scan();            
  35.         if(key)
  36.         {     
  37.             LCD_ShowNum(86,130,key,3,16);        //显示键值
  38.             LCD_ShowNum(86,150,RmtCnt,3,16);    //显示按键次数         
  39.             switch(key)
  40.             {            
  41.                 case 24:  Forward_run();str="UP";break;      //UP
  42.                 case 74:  Backward_run();str="DOWN";break;     //DOWN
  43.                 case 16:  LEFT();str="LEFT";break;                //LEFT
  44.                 case 90:  RIGHT();str="RIGHT";break;             //RIGHT
  45.                 case 56:  Stop();str="STOP";break;                    //STOP
  46.                  
  47.                 case 162: LED_L();str="1";break;                             //"1"
  48.                 case 98:  LED_M();str="2";break;                             //"2"
  49.                 case 226: Left_Back();str="AUTO_PARKING";break;  //"3"
  50.                 case 34:  X_J();str="TRACKING";break;            //"4"
  51.             }
  52.             LCD_Fill(86,170,116+8*8,170+16,WHITE);    //清楚之前的显示
  53.             LCD_ShowString(86,170,200,16,16,str);    //显示SYMBOL
  54.         }else delay_ms(10);      
  55.         
  56.         t++;
  57.         if(t==50)
  58.         {
  59.             t=0;
  60.             LED0=!LED0;
  61.         }
  62.     }
  63. }
复制代码
全部资料51hei下载地址:
红外遥控循迹小车.7z (229.87 KB, 下载次数: 43)
回复

使用道具 举报

ID:848045 发表于 2021-1-14 14:48 | 显示全部楼层
根本没有光电测速呀 瞎jb吹牛
回复

使用道具 举报

ID:877505 发表于 2021-1-15 12:01 | 显示全部楼层
为了能够测定出电机在单位时间内转子旋转了多少个周期,我们在电机的外部电路中加入了一
个开关型的霍尔原件( 44E),同时在电子转子上的转盘上加入了一个能够使霍尔原件产生输出的带
有磁场的磁钢片。当电机旋转时,带动转盘是的磁钢片一起旋转,当磁钢片旋转到霍尔器件的上方
时,可以导致霍尔器件的输出端高电平变为低电平。当磁钢片转过霍尔器件上方后,霍尔器件的输
出端又恢复高电平输出。这样电机每旋转一周,则会使霍尔器件的输出端产生一个低脉冲,我们就
可以通过检测单位时间内霍尔器件输出端低脉冲的个数来推算出直流电机在单位时间内的转速。
回复

使用道具 举报

ID:877505 发表于 2021-1-15 12:04 | 显示全部楼层
现在使用红外遥控小车的很不方便的,需要将遥控器对着小车,最好是使用2.4G通信,而且模块也便宜,控制也方便,红外遥控器一般多用在对固定位置不变的物体进行无线控制,动态物体一般不用的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表