在学习单片机的时候做过很多有意思的小设计,就比如做过智能小车,我用到循迹模块,超声波跟随模块,蓝牙遥控模块,今天就先给大家说一下循迹模块,买的是模块成品,所以硬件方面,连接很简单。

循迹模块是利用红外发射管和红外接收管组成,然后对地面发射信号,如果遇到黑色轨迹的线会反射信号回来,接收信号管,会产生一个高电平给单片机,这个时候咱们利用这个返回来的信号来控制小车的左右运动。

我感觉初学者最好直接买整体的车,某猫上都有的,这样我们就直接找源码就可以了。

我的小车上的循迹模块接就是这个,VCC连接5V,GND接地,Lo和Ro表示左右循迹发送回来的信号接收线,连接单片机IO口就行了。

我利用定时器0设置PWM波来控制智能车的速度,利用循迹模块返回的信号,来控制小车的转向。检测到黑色的轨迹线,会反射回来高电平。把这两个两个数据处理好,那么循迹小车就完成了。轨迹线,我觉得可以从买那种黑色的胶带,买较宽的胶带,那样更省事一点。


话不多收,直接上源码:

循迹模块的C文件

//循迹模块的C文件#include "xunji.H"u8 pwm_left=0,pwm_right=0;
u16 t=0,flag; void xunji_init()
{TMOD|=0x10;//定时器1,工作方式1,16位TH1=(65536-100)/256;//pwmTL1=(65536-100)%256;EA=1;ET1=1;//中断允许TR1=1;//打开定时器
}void qian(u16 right,u16 left)
{pwm_right=right;//25pwm_left=left;//25IN1=1;IN2=0;IN3=1;IN4=0;
}void stop()
{IN1=0;IN2=0;IN3=0;IN4=0;
}void zuo(u16 right,u16 left)
{pwm_right=right;//35pwm_left=left;//30IN1=0;IN2=0;IN3=1;IN4=0;
}void you(u16 right,u16 left)
{pwm_right=right;pwm_left=left;IN1=1;IN2=0;IN3=0;IN4=0;
}void back(u16 right,u16 left)
{pwm_right=right;pwm_left=left;IN1=0;IN2=1;IN3=0;IN4=1;
}void xunji_T0() interrupt 3   //定时100us
{EA=0;TH1=(65536-100)/256;TL1=(65536-100)%256;t++;if(pwm_right>=t)ENA=1;else ENA=0;if(pwm_left>=t)ENB=1;else ENB=0;if(t==50)t=0;EA=1;
}
void xunji()
{if((XUNJI_IN2==1) && (XUNJI_IN1==1)){flag=0; //前                }else if((XUNJI_IN2==1) && (XUNJI_IN1==0)){flag=1;//左}else if((XUNJI_IN2==0) && (XUNJI_IN1==1)){flag=2;//右}else if((XUNJI_IN2==0) && (XUNJI_IN1==0)){flag=3;//停}else{flag=4;}switch(flag){case 0: qian(22,22); break;case 1: zuo(17,15);  break;case 2: you(15,17);  break;case 3: stop(); break;case 4: qian(22,22); break;}
}

循迹模块的头文件

//循迹模块的头文件#ifndef __xunji_H__
#define __xunji_H__#include "main.h"sbit ENA=P1^0;//电机的PWM连接管脚
sbit ENB=P1^5;
sbit IN1=P1^1;//电机转动引脚,一个电机两根线
sbit IN2=P1^2;
sbit IN3=P1^3;
sbit IN4=P1^4;
sbit XUNJI_IN1=P3^6;//循迹模块信号引脚
sbit XUNJI_IN2=P3^7;void xunji();
void xunji_init();
void qian(u16 right,u16 left);
void stop();
void you(u16 right,u16 left);
void zuo(u16 right,u16 left);
void back(u16 right,u16 left);#endif

主函数C文件

//主函数C文件
#include "main.h"
#include "xunji.h"void main()
{xunji_init();while(){xunji();}
}

主函数头文件

#ifndef __main_H__
#define __main_H__#include <REGX52.H>#define u16 unsigned int
#define u8 unsigned char#endif

51智能小车小车之循迹(一)相关推荐

  1. 【 STM32实例 】 智能小车的红外循迹

    文章目录 前言 一.硬件选择与连接 1. STM32F103C8T6最小系统板 2. L298N双路电机驱动 3. 红外循迹模块 二.环境配置 1. Device 2. Output 3. C/C++ ...

  2. c32循迹小车c语言程序,STM32小车红外黑线循迹源程序

    /********************************* 深圳市航太电子 ******************************* * 实 验 名 :小车红外黑线循迹 * 实验说明 ...

  3. 基于51系列单片机的(循迹、避障、蓝牙)智能小车(2)源代码

    主程序 main.c /**************************************************************************************** ...

  4. 51单片机-蓝牙遥控红外循迹小车-代码+硬件连接

    2021/04/28-更新工具的连接 ----------------------------------------- 前几天弄了个基于51芯片的蓝牙红外小车,因为是新手也没有人教,网上的资料也不够 ...

  5. 以51单片机为基础的自动循迹小车

    51单片机自动循迹小车 #include<reg52.h>sbit IN1=P1^2; //左电机正转 sbit IN2=P1^3; //左电机反转 sbit IN3=P1^6; //右电 ...

  6. 智行小车(基于51单片机)——避障+循迹+停

    讲道理,这辆小车是我们参加校赛所制作的,在这次的小车制作过程之中存在的很多的不足和时间的浪费情况. 队员的选择和分工也都存在着一定的问题(这应该是我最头疼的问题) 但是总得来说还算是取得了一个不错的结 ...

  7. arduino黑线循迹小车程序_循迹小车:给我一条线,我能自己走完全程

    在老少通吃的智能小车到底是什么呢?科普来喽!一文中,我们介绍了智能小车的分类及组成,为什么循迹小车能够追踪黑线轨迹呢? 智能小车在画有黑线的白纸 "路面"上行驶,由于黑线和白纸对光 ...

  8. 【32最小系统板】pid循迹小车(铁丝循迹)

    文章目录 前言 一.任务.要求及评分标准 1.1 任务 1.2 要求及评分标准 1.3 说明 二.先上视频效果 三.小车循迹方法 1.第一次做循迹时 2.第二次做循迹时 状态机 调PID 四.铁丝与硬 ...

  9. 单片机怎么控制水泵灭火_毕业设计| 智能自动寻光循迹灭火小车

    智能寻迹灭火小车的主控芯片使用的是STC89C52单片机,虽然是51系列的单片机,但是性能可以满足本设计.小车重要的电机驱动模块选用的是L298芯片驱动,控制电机的前进和后推.利用红外传感器探测地面上 ...

  10. 基于51单片机的多功能智能语音循迹避障小车

    目录 一.功能介绍及硬件准备 二.电机控制及调速 三.小车循迹方案 四.跟随功能实现 五.测速功能实现 六.OLED显示车速 七.摇头避障功能实现 八.SU-03T语音模块介绍 九.语音切换小车模式+ ...

最新文章

  1. vscode断开调试服务器文件,vscode显示等待调试器断开连接
  2. python使用matplotlib可视化线图(line plot)、使用invert_yaxis函数将Y轴坐标反序(invert the y axis in matplotlib)
  3. 解决Dynamic Web Module 3.0 Requires Java 1.6 or newer
  4. java swing form_在java swing中创建表单最简单的方法是什么?
  5. 使用递归方法遍历TreeView的节点如配置则勾选
  6. java等待_Java学习:等待唤醒机制
  7. nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
  8. oracle erp 用户手册,oracleerp用户手册-mrp
  9. 删除oracle安装目录,Oracle 卸载
  10. Samba 实现文件共享
  11. 机器学习中的数学——优化技术:参数初始化策略
  12. 【软工作业思考】关于软工的一些概念性理解暨第一次阅读作业
  13. 【致远FAQ】V5V8.0sp1_单位管理员-流程督办监控-批量移交-待分配事项,是什么意思?
  14. [导入]Swatch手表
  15. mysql 三表关联查询
  16. 锤子科技 锤子便签APP产品使用用户体验报告
  17. Debian 下的五笔输入法 Rime
  18. python计算对数收益率_为VNPY的K线序列管理工具ArrayManager增加对数收益率队列
  19. 磁悬浮框架飞轮磁轴承技术研究与发展现状
  20. C++软件开发中“时间”相关操作全攻略

热门文章

  1. 腾云忆想技术干货| 基于TSF的API对外管理实践
  2. PR 如何设置素材持续时间
  3. 《Soft-NMS – Improving Object Detection With One Line of Code》论文翻译
  4. phpcms v9 模板对应表
  5. CSP-J CSP-S NOIP 算法竞赛中的STL(标准模板库)
  6. mysql执行状态分析
  7. CentOS8系统安装php-redis扩展(php7.2版本)
  8. 一键式AI绘画,让你也能体验当画师的魅力(附原理分析)
  9. OpenGL:基本图形绘画
  10. Navicat远程连接服务器mysql 1045错误