内容正文:
中物理
第一单元 认识未来城市中的机器人
川教版(2019) 信息技术(九年级下册)
第3节 安防机器人的制作实践
(第二课时)
学易同步精品课堂
1
课堂导入
同学们:
上一节课我们完成了机器人小车的搭建和功能调试,今天这节课我们要为机器人小车设计程序并编译程序、调校参数。
学习目标
1
1. 能根据机器人小车的功能需求,设计流程图。
2. 能根据流程图编写程序,实现机器人小车的各项功能。
2
目录
一、程序设计
二、编译上传、调校参数
程序设计
一
一、程序设计
程序设计
一
1.绘制流程图
(1)机器人小车工作流程图
为你厘清编程思路,可以采用先总后分的编程模式,先思考总体方案,再分子项目解决方案。下图是城市安防机器人小车“定线不定向”巡逻工作流程图:
程序设计
一
开始
超声波检测
前方是否有障碍物
巡线
LED灯闪烁
小车停止
是
否
程序设计
一
小提示:
由于Arduino控制器执行的特殊性,只要Arduino 开始运行,程序会一直循环执行。因此,会出现没有结束环节的无限循环流程图。
(2)循迹流程图
机器人小车在沿直线或弧线运动过程中,可能会偏离黑线。因此,需要设计机器人小车循迹工作流程图。
程序设计
一
开始
如果仅中间传感器检测到黑线
小车直行
脱线校正或遇路口转向处理
是
否
红外循迹检测黑线
是
如果仅左侧传感器检测到黑线
如果仅右侧传感器检测到黑线
是
小车左转
否
小车右转
否
程序设计
一
思考:
机器人小车在运动时,可能会因速度过快、偏转的角度过大,而偏离黑线,导致三个红外循迹传感器都未能检测到黑线。在这两种情况下,小车该如何判断是向右还是向左偏离了黑线?
机器人小车在运动过程中,可能需要处理多个结果,编程时通常会用变量来标识可能出现的结果,就是给初始状态下的机器人小车赋一个值(初始值),当机器人小车运动状态发生变化时,变量的值也随之发生改变,以此来判断和描述机器人小车运动状态发生变化后的结果。
探索实践:
先声明一个标志变量,并赋予其一定的初始值,用于标志小车“脱线”偏转状态。当小车发生偏转时,标志变量在初始值基础上增加或减少一定值,从而完成小车“脱线”前偏转状态的“记录”,据此,完善流程图。
程序设计
一
开始
如果只有左侧传感器检测到黑线
小车直行
说明小车已向左脱离黑线,脱险标志变量新赋值
是
给脱线标志变量赋初始值
否
如果左侧传感器也没检测到黑线
是
否
红外循迹
根据标志变量值的变化,小车应快速向右转。
说明小车已向右偏离黑线,小车应快速向左转。
程序设计
一
(3)不同类型路口检测编程流程图
机器人小车行驶会遇到“ ”形、“T”形或“+”形路口。
小车经过不同类型路口时,多个红外循迹传感器可能会检测到相同的值。因此,要对遇到不同路口时得到同一检测值的情况加以判断。
如果小车继续直行,就能判断路口的类型。据此,以“ ”形路口与“ ”形路口设计来工作流程图。
程序设计
一
开始
如果中间与右侧传感器同时检测到黑线
小车直行
小车根据随机数值完成右转或直行
是
否
如果只有中间传感器检测到黑线
是
否
红外循迹
生成2个随机数值
小车右转
小车后退
小车后退
程序设计
一
2.根据流程图编写程序
(1)设计并声明相关变量
程序的编写会用到变量,需要在用之前进行声明,如下图所示:
脱线判断变量
三组红外循迹传感器返回值
左侧
脱线判断变量
右侧
中间
程序设计
一
(2)直流电机运行模块函数
拖动“执行模块”中的电机控制模块,通过选择左右电机控制管脚号及运转速度,编写小车不同运行模式(直行、右转、左转、快速右转、快速左转、停止)的子程序,如下图所示:
直行函数:
右转函数:
快速右转函数:
改变速度的正负值可控制电机的转动方向
程序设计
一
课堂练习:
请照上图的程序示例,完成机器人小车左转、快速左转、后退等行驶状态的子模块函数的编写。
(3)遇障碍提示程序
当超声波传感器检测到障碍物与小车的距离小于等于30cm时,小车停止,LED灯开始间隔0.5s闪烁,其程序示例如下图所示:
程序设计
一
(4)逻辑判断
对照各工作流程图,编写判断程序。
直行:当只有中间红外循迹传感器检测到黑线时,小车直行,其程序示例如下图:
右转:当小车向左偏离时,右侧红外循迹传感器会检测到黑线,小车需要右转。但为了预防小车向左偏离过快而三组红外循迹传感器均为检测到黑线的情况发生,这时,设定“脱线变量”递增。同理,若小车向右脱离黑线,“脱线变量”递减,其程序示例如下图:
程序设计
一
快速右转:当小车向左脱线,需要小车快速右转回到黑线上时。其程序示例如下图:
程序设计
一
“ ”形路口与“ ”形路口的判断
当中间红外循迹传感器与右侧红外循迹传感器同时检测到黑线时,可视为小车