通过这段时间的学习,终于是把智能小车的循迹、跟随、避障业务实现出来。那么通过写下这篇文章,将自己在这个过程的心得、组装智能小车以及通过代码的编写实现各种业务的心路历程记录下来。

这是小车的实物图,通过语音模块控制各业务功能的实现。那我们先从小车的循迹模块开始讲起。首先,我们通过热熔胶简易的将两个循迹模块粘在小车前端。如图,小车位于内测的就是两个循迹模块。不过只有循迹模块还不够,在面包板和单片机的中间,还有一个L9110s电机驱动模块。以上就是循迹业务所需要的模块。两个循迹模块、一个电机驱动模块。

然后就是软件的编写了。这里为了方便代码的编写,以及可以看的更加清晰,所以我们要进行分文件操作。

#include "reg52.h"
#include "delay.h"
#include "motor.h"
#include "UART.h"
#include "time.h"sbit leftsensor = P2^7;
sbit rightsensor = P2^6;void main()
{//Timer0init();//Timer1init();//UartInit();while(1){if(leftsensor == 0 && rightsensor == 0){goforward();}if(leftsensor == 0 && rightsensor == 1){goleft();}if(leftsensor == 1 && rightsensor == 0){goright();}if(leftsensor == 1 && rightsensor == 1){stop();}}
}

这是主函数段的代码,里面写的就是循迹模块业务的代码。

#include "reg52.h"sbit right_con1A = P3^2;
sbit right_con1B = P3^3;
sbit left_con1A  = P3^4;
sbit left_con1B  = P3^5;void goforward()
{right_con1A = 0;right_con1B = 1;left_con1A  = 0;left_con1B  = 1;
}void goback()
{right_con1A = 1;right_con1B = 0;left_con1A  = 1;left_con1B  = 0;
}void goleft()
{right_con1A = 0;right_con1B = 1;left_con1A  = 0;left_con1B  = 0;
}void goright()
{right_con1A = 0;right_con1B = 0;left_con1A  = 0;left_con1B  = 1;
}void stop()
{right_con1A = 0;right_con1B = 0;left_con1A  = 0;left_con1B  = 0;
}void leftgoforward()
{left_con1A  = 0;left_con1B  = 1;
}void rightgoforward()
{right_con1A = 0;right_con1B = 1;
}void leftstop()
{left_con1A  = 0;left_con1B  = 0;
}void rightstop()
{right_con1A = 0;right_con1B = 0;
}

这是电机驱动的代码,在主函数段通过声明该头文件即可。一个简易的循迹小车就完成了。

当然,为了能够解决具体在实践中的问题,我们可以把循迹小车做的更加精细。通过设置定时器,形成左轮和右轮的差速,这样在转弯的时候可以更加平滑。

#include "reg52.h"
#include "motor.h"
int left_cnt = 0;
int right_cnt = 0;
char rightspeed;
char leftspeed;void Timer0init()
{TMOD=0x01;TH0=0xFE;TL0=0x33;TR0 = 1;TF0 = 0;ET0 = 1;EA = 1;
} void Timer1init()
{TMOD&=0x0F;TMOD|=0x10;TH1=0xFE;TL1=0x33;TR1 = 1;TF1 = 0;ET1 = 1;EA = 1;
} void Timer0handle() interrupt 1
{left_cnt++;TH0=0xFE;TL0=0x33;if(left_cnt<leftspeed){leftgoforward();}else{leftstop();}if(left_cnt == 40)//20ms{left_cnt = 0;}
}void Timer1handle() interrupt 3
{right_cnt++;TH1=0xFE;TL1=0x33;if(right_cnt<rightspeed){rightgoforward();}else{rightstop();}if(right_cnt == 40)//20ms{right_cnt = 0;}
}

最后经过优化后的主函数段业务代码:

#include "reg52.h"
#include "delay.h"
#include "motor.h"
#include "UART.h"
#include "time.h"sbit leftsensor = P2^5;
sbit rightsensor = P2^4;extern char leftspeed;
extern char rightspeed;void main()
{Timer0init();Timer1init();//UartInit();while(1){if(leftsensor == 0 && rightsensor == 0){//goforward();leftspeed = 40;rightspeed = 40;}if(leftsensor == 0 && rightsensor == 1){//goleft();leftspeed = 15;rightspeed = 40;}if(leftsensor == 1 && rightsensor == 0){//goright();leftspeed = 40;rightspeed = 15;}if(leftsensor == 1 && rightsensor == 1){stop();}}
}

跟随业务的代码和循迹的是一样的,不过跟随不需要调速,用最初的循迹业务模块即可。两个模块的工作原理都是通过发射红外线,并响应能否接受到红外线,从而置高电平或低电平。

智能小车循迹、跟随业务代码编写相关推荐

  1. 循迹智能小车c语言主程序,智能小车循迹、避障、红外遥控C语言代码

    <智能小车循迹.避障.红外遥控C语言代码>由会员分享,可在线阅读,更多相关<智能小车循迹.避障.红外遥控C语言代码(13页珍藏版)>请在人人文库网上搜索. 1.智能小车避障.循 ...

  2. Arduino智能小车——循迹篇

    Arduino智能小车--循迹篇 Arduino智能小车系列教程时空门: Arduino智能小车--拼装篇 点击跳转 Arduino智能小车--测试篇 点击跳转 Arduino智能小车--调速篇 点击 ...

  3. 基于51单片机智能小车循迹功能的实现

    基于51单片机智能小车循迹功能的实现 目录 基于51单片机智能小车循迹功能的实现 一.思路(仅供参考) 二.部分硬件模块介绍 1.L298n电机驱动模块 2.两路红外循迹模块 三.实现 1.代码 2. ...

  4. 五路循迹传感器的优点_5路红外线传感器控制智能小车循迹,27秒走完所有站点...

    5路红外线循迹智能小车27秒走完比赛地图 为了指导学生参加2017年广东省机器人挑战赛自选项目"高铁时代"的比赛,我改进了某厂家的arduino智能小车,把红外线循迹传感器从2路增 ...

  5. 遥控汽车的编程c语言,智能小车循迹、避障、红外遥控C语言代码.docx

    //智能小车避障.循迹.红外遥控C语言代码 // 实现功能有超声波避障, 红外遥控智能小车, 红外传感器实现小车自动循迹, 1602 显示小 车的工作状态,另有三个独立按键分别控制三种状态的转换 // ...

  6. STM32智能小车循迹教程

    文章目录 前言 一.红外循迹模块工作原理及接线图 红外循迹模块工作原理 红外循迹模块和STM32的接线图 二.cubeMX配置 三.代码解析 总结 前言 本篇文章将带大家学习STM32智能小车的循迹功 ...

  7. 51单片机智能小车循迹完整程序_电气与信息工程学院双创协会开展循迹小车培训...

    为培养青年学子创新意识和创新能力,激发勇于创新的主动性和积极性,营造良好科技创新氛围,10月29日至30日,电气与信息工程学院双创协会于一教609.三教102和三教202开展循迹小车培训,该培训由电子 ...

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

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

  9. 循迹智能小车 循黑线 智能小车 红外循迹传感器 单片机

    循迹智能小车 循黑线 文章目录 循迹智能小车 循黑线 硬件菜单 硬件使用 硬件组装 程序设计前的理解 程序代码 个人原创博客: 点我浏览 硬件菜单 单片机型号:STC16F40K128 4路红外循迹模 ...

最新文章

  1. 搞科研不如当老师香?南科大助理教授“跳槽”深圳中学当老师
  2. # 管道已结束_CIPP内衬紫外线固化法用于污水管道非开挖修复
  3. 三分钟带你对 Softmax 划重点
  4. thinkphp加锁抢购商品
  5. PTA浙大版python程序设计题目集--第2章-2 计算分段函数[1] (10 分)
  6. python mysql写入速度加快_解决python写入mysql中datetime类型遇到的问题
  7. 重新审视自己和自己的目标
  8. 简单的签到代码_【SAS小恩的代码段】02样本分布、两群体与组合差异性检定
  9. 自创一种新的方法建立 平衡二叉树(AVL)
  10. python爬虫requests设置代理ip_干货|Python爬虫如何设置代理IP
  11. matlab 固态 机械_固态硬盘无法识别或数据删除还能恢复数据吗?
  12. 【vue】vue中如何实现SPA 单页面应用_09
  13. [其他] ATI HD6630M 显卡在Win10下终于有救了(DEll 14R N4120)
  14. 2021届西农计算机复试工作方案(学院)
  15. H5的video用法
  16. 计算机基本技能实训总结,计算机基本技能实训总结报告[2014]
  17. html中bottom的作用,css bottom属性怎么用
  18. ffmpeg音频采样率转换
  19. 顶刊是如何炼成的|使用Stata绘制边际效应图
  20. 最新好玩的神乐七奈桌面宠物+附带BGM音效

热门文章

  1. JAVA导出pdf文件
  2. 每次听到同事跳槽后的薪资,我就像打了鸡血一样
  3. 公钥加密——RSA浅析
  4. Windows Powershell 快捷键介绍
  5. 低代码,怎么秃然就火了?
  6. Python 量化投资实战教程(2) —MACD策略(+26.9%)
  7. 【STM32】HAL库——串口DMA通信(三)
  8. c++中结构体和类的区别
  9. 上王者的正确姿势:OPPO R17 Pro王者定制版
  10. 原生小程序Tabbar底部加购物车