Arduino轻松学Lesson 9 超声波测距仪
1. 课程简介
本节课以超声波测距仪为例,为大家讲解超声波测距的原理及基于IIC通讯协议的LCD液晶屏的使用。本节课所需硬件:Arduino UNO、IO扩展板、LCD显示器、超声波测距模块
2. 本节知识点设备初始化LCD液晶显示器使用*脉冲宽度检测
3. Mixly模块初始化
模块位置:“控制”栏模块功能:初始化设备及变量。该模块对应的Arduino程序的setup()函数,该函数内的命令在设备通电启动后仅执行一次,所以通常在此函数内进行设备初始化、串口通讯频率、端口模式等设定操作。变量声明虽然可以放到该模块内,但在实际的Arduino代码,变量声明语句并不在setup()函数内。具体内容会在慕课最后一节中讲解。
LCD初始化
模块位置:“显示器”栏模块功能:设定显示器类型,初始化LCD,建立IIC通讯。1602:课程套件中所用的显示器类型,两行显示,每行16个字符。除此之外还有2004型,即4行显示,每行20字符。ArduinoUNO板的时钟总线为A5端口,数据总线为A4端口,不可更改。0x20为课程所用套件的LCD液晶屏IIC地址,第三方的IIC协议LCD液晶屏地址默认为0x27,可以通过短接屏幕背面接口板上的A0、A1、A2接口调整IIC地址。
液晶显示屏功能设置
模块位置:“显示器”栏模块功能:设置液晶显示屏的功能,如屏幕开、关、光标显示、背光闪烁、清屏等操作。
液晶屏内容显示
模块位置:“显示器”栏模块作用:设定显示的内容及内容首字母的行、列位置。行数自下而上数,列数为自左向右数。
超声波测距
模块位置:“传感器”栏模块功能:测量超声波测距模块返回的脉冲长度信号并换算成对应距离。
文本连字符
模块位置:“文本”栏模块功能:将左右两侧的字符串连接成一个字符串。Distance为浮点型(Mixly中描述为小数类型)变量,转变为字符串,转换后的结果无法直接进行数字运算。即数字5≠字符5,符号相同,意义不同。
*脉冲宽度检测
所处位置:“输入输出”栏模块作用:检测对应管脚返回高电平的持续时间。
4. 程序及流程图程序图
流程图
5.关联知识讲解IIC协议
IIC是飞利浦公司研发的一种总线通讯协议,每条IIC总线上有一台主机,7位寻址IIC总线的最多可以同时接入127台从机,设备各自对应独立的地址信息。主机与从机通过时钟总线和数据总线通信。Arduino UNO板的时钟总线为A5端口,数据总线为A4端口,不可更改。
超声波测距原理
套件中所使用的HC-SR04超声波测距模块可提供2cm-400cm的距离感测,测距精度可达3mm。测量过程首先向Trig端口输入持续时间10μs的高电平信号,随后拉低电平信号,测距模块会发出1组8个40KHz的脉冲信号,脉冲信号遇到障碍物后反弹,测距模块一旦接受到返回的信号,则会在Echo端口输出长度与所测距离成正比的脉冲信号,我们通过脉冲长度检测获取到信号长度,乘以声速再除以2,即可得到距离数值。
distance=time×340m/s÷2
*脉冲宽度检测按照上述的测距流程,程序中的距离测量也可用右侧的程序实现。两者等效。
6.课堂练习
结合纸模,制作一个测距仪。
7.作业及挑战
由于显示频率,课程中的案例闪烁过快,如何实现如下稳定显示效果?完成程序并上传程序截图及效果视频。
课程简介
《Arduino轻松学》是科技学堂制作的在线系列创客教学视频之一。《轻松学》是一套Arduino开发的基础入门课程,适合还没有过硬件开发和编程经验的人群做入门学习使用。本课程中,每节课带你制作一个趣味小项目,在学到技术的同时,也开动想象发挥创造。
课程案例
《轻松学》课程中使用非常适合初学者的DFRobot的米思齐(Mixly)编程积木入门套装,软件选用图形化编程的Mixly。课程以视频+图文的呈现形式,深入浅出。既有操作演示,又方便学习者自主观看查询,轻松完成Arduino的入门学习。
评论