Arduinowilliam hill官网
直播中

魏成杰

11年用户 187经验值
擅长:电源/新能源
私信 关注
[经验]

【mBot试用体验】红外遥控mBot运动

年底快放假了,公司也特别忙,明天周日还得去山东出差,今天抓紧更新下mBot的试用报告。
前面几章介绍了mBot小车的外观、硬件和软件,今天继续软件部分,不过不是讲解官方的软件程序了,而且开始完成项目目标。按照当时的申请报告,第一项是实现红外遥控器手动控制小车运动,那么我就从这开始。
首先打开应用mBlock,选择“Arduino模式”,这时“脚本”里只剩下四项与mBot编程有关的积木组-“控制”、“数据和指令“、“数字和逻辑运算”、“机器人模块”,如图1所示。
打开mBlock.png

图1 编程环境


为了大家看起来清晰明了,我先画一个程序运行的流程图,然后按照流程图一步步实现功能,这也是编程时的一个好习惯,流程图如图2所示。

流程图.JPG

图2 流程图


流程图比较简单,不过基本就是这个样子。然后我们就开始吧,上电后第一步就是初始化,让小车处于静止状态,并且RGB灯依次闪烁一遍、蜂鸣器响三声表示小车已经启动。实现这个功能很简单了,每个程序第一步都要添加“机器人模块”下的“mBot主程序”积木,当把这个积木放入编辑区时,代码区将对应的加入头文件#include ,接着加入“前进转速为0”、“设置LED”、“播放音调”和“控制”下的“等待”等积木,我设置的等待时间为0.1秒,最后的结果如图3所示。

初始化.png

图3 初始化


可以看出来,当mBot小车上电后首先设置电机速度为0,主要原因是为了防止上电后乱动,然后是LED灯和蜂鸣器每隔0.1秒交换一次,三次以后全部关闭。很多内容在刚开始很难想全面,所以后面遇到的时候还会一步步加入初始化,比如一些变量。

接下来进入主循环语句,因为接下来的所有动作必须等待我按下红外遥控器后才能做出,所以必须是个无限循环语句,首先将“控制”下的“重复执行”积木加入,然后将其他所有的积木均放在“重复执行”内部。

实现的功能大致是:1.默认电机转速为100,当按下上下左右键时,向对应的方向运动;2.当按下数字键时,蜂鸣器播放不同的声音,并且将对应的速度设置为电机转速;3.当按下字母键时,蜂鸣器播放不同的声音,并且实现不同的功能,比如按下“A”键打开光线传感器,此时如果外界光线较强自动关闭RGB,如果光线很弱自动打开RGB,而且RGB的亮度随着光线强弱反向变化。

我先实现第一个功能,由于数字键会改变转速,所以我要用到变量,那么就在“数据和指令”下新建变量“转速”,并“将转速设定为100”积木加入初始化程序,基本程序如图4所示。

红外遥控1.png

图4 红外遥控移动

由于程序很长,如果一直这样写下去,“重复执行”将会被拉很长很长,那么我们可以加入子函数,当满足条件时直接调用子函数,这样看起来会很简洁美观。按照功能来说,我加入5个子函数和一些变量,如图5所示。

变量和函数.png

图5 变量和子函数

这些子函数分别实现一部分功能,最后将程序上传到Arduino,进过慢慢的调试,最终肯定能得到了满意的结果,如图6所示。因为这部分很简单,用积木多试试就可以得到不错的效果,而且自己做出来的程序很好玩,会比官方自带的程序更灵活更有趣。

总图.png

图6 最终的部分程序

主程序蛮多的,我就不贴了,大家必定也能做出来,有什么有意思的想法就分享给我吧。总体觉得搭积木的方法很容易,比打代码快很多,当对这种方法熟悉以后会做的非常快,并且代码质量也会越来越高,期待大家更好的程序。


更多回帖

发帖
×
20
完善资料,
赚取积分