50360| 0
|
[M10教程] 【行空板】用Python玩转开源硬件-第04课:美食推荐机器人 |
本帖最后由 木子呢 于 2023-2-9 11:10 编辑 第04课:美食推荐机器人 火锅、串串、冒菜、纸包鱼、酸辣蹄花、芋儿鸡、粉蒸肉……好吃的太多了,想吃的也很多,要在众多美食中挑选出一样,真是太难了。我们时常被“吃什么”困扰着,每天问的最多和被问最多的就是“中午吃什么”“晚上吃什么”“宵夜吃什么”…… 如果有一款实用的美食推荐机器人,在我们纠结要吃什么的时候,只需要轻轻地按下按钮,它就可以在众多美食中快速做出决定。这样的美食推荐机器人简直是选择困难者的福音,接下来我们一起动手,使用行空板、RGB灯环、按钮模块设计一款这样的美食推荐机器人吧! 任务目标 按下“按钮模块”,RGB灯环以跑马灯的形式显示,最后灯珠停在的位置就是美食机器人给我们推荐的美食,并且行空板上会显示灯珠对应的美食图片。 知识点 1. 学习带参函数的定义 2. 掌握按钮模块的使用方法及工作原理 材料清单 硬件清单: 软件使用:Mind+编程软件 x1 下载地址:https://mindplus.cc/ 动手实践 这节课中,主要是使用按钮模块和RGB灯环,制作一款美食推荐机器人。首先需要了解按钮模块的输入信号,然后学习如何使用按钮模块控制RGB灯环,最后完成美食推荐机器人的制作。接下来,就通过下列三个小任务来学习如何制作一款美食推荐机器人吧! 任务一:读取按钮模块的值 读取带LED灯的按钮模块,在工作时输入的信号。 任务二:使用按钮控制RGB灯环 按下按钮,控制RGB灯环执行跑马灯程序。 任务三:制作美食推荐机器人 按下按钮,RGB的灯环执行跑马灯程序,并产生一个随机数,让随机数对应的灯珠亮起,行空板显示灯珠对应的美食。 任务一:读取按钮模块的值 1.硬件连接 带LED灯的数字按钮模块,是一款会发光的开关式按钮。当我们按下按钮时,它可以发出蓝色的灯光。 使用白色硅胶线将带LED灯数字按钮模块连接到P23引脚,硬件连接成功后,使用USB线将行空板连接到计算机。 注意:“带LED灯的数字按钮模块”相关介绍,见知识园地。 2.软件准备 打开Mind+,按照下面图示完成软件准备工作。 3.编写程序 带LED灯的数字按钮模块上印有丝印“D”,可以看出这是一个数字输入传感器。也就是说,这个按钮模块输入的信号为数字信号,即0和1。 如何才能知道这个按钮模块什么时候输入数字信号0,什么时候输入数字信号1呢?要获取按钮的输入信号,使用读取数字引脚指令,并选择引脚为P23引脚。 然后使用显示文字指令,将按钮按下和松开的数字值显示在行空板上。 4.程序运行 点击运行,程序运行成功后,按下按钮,按钮模块亮蓝色的灯,行空板上显示数字1;松开按钮,按钮模块上的灯灭,行空板上显示数字0。也就是按下按钮,输入数字信号1,松开按钮,输入数字信号0。 任务二:使用按钮控制RGB灯环 1.硬件连接 在任务一的硬件连接基础上,使用白色硅胶线将RGB灯环连接到P24引脚,硬件连接成功后,使用USB线将行空板连接到计算机。 2.软件准备 添加WS2812 RGB灯库,点击“扩展”,在pinpong库中找到“WS2812 RGB灯”并点击,完成添加。 3.编写程序 如何使用按钮控制RGB灯环执行跑马灯程序呢?按下按钮,RGB灯环就执行跑马灯程序,使用条件判断指令,判断按钮是否被按下。 如果按钮按下,RGB灯环执行跑马灯程序,跑马灯程序在第三课中,已经学习了,这个任务中我们直接用就可以了。 程序中,按下按钮,执行一次跑马灯程序,也就是灯珠在灯环上跑一圈。如果想要灯珠在灯环上多跑几圈该怎么做呢?使用重复执行次数指令,控制跑马灯程序执行的次数。完整程序如下: 4.程序运行 点击运行,程序运行成功后,按下按钮,RGB灯环执行三次跑马灯的程序。三次跑马灯程序执行完后,灯环熄灭。只要检测到按钮按下,就继续执行三次跑马灯程序。 5.试一试 上面的程序,当检测到按钮按下,固定重复执行三次跑马灯的程序。想要实现执行次数为1-5的随机次数该怎么做呢?接下来,大家就在上面程序上进行修改,实现按下按钮后,RGB灯环执行1-5随机次跑马灯程序。 提示:将重复执行指令中的次数,修改为数字类型中的随机数指令。 任务三:制作美食推荐机器人 1.编写程序 在开始编写程序之前,先来分析一下,利用灯环如何实现美食推荐机器人。生活中,大家玩过抽奖大转盘吧,用力转动转盘,然后转盘的速度由快到慢,然后慢慢停下来,指针指着的位置就是我们中的奖项。美食推荐机器人的原理与这个抽奖大转盘类似,使用RGB灯环作为美食转盘。按下按钮,灯珠开始旋转,旋转速度由快到慢,最后灯珠停住的位置就是为我们推荐的美食。 (1)设置首页提示界面 首先在任务二试一试的基础上,完成首页行空板的界面设置。将图片素材中的背景以及美食图片导入文件系统中。 使用显示文字指令在行空板上显示文字“按下按钮,美食机器人为您推荐随机美食”。然后使用显示图片指令,将背景图片显示在行空板上。 (2)设置灯珠旋转速度 上面的程序,完成了灯珠执行1-5次跑马灯的程序。但是跑马灯程序中,灯珠旋转的速度是很快的,如何才能实现灯珠旋转由快到慢呢?控制灯珠旋转的速度可以修改等待时间(延时),在灯珠执行完快的跑马灯程序后,将等待时间变长,来控制灯珠旋转速度变慢。 同学们肯定发现了,我们这里新增加的程序也是跑马灯的程序,只是等待的时间不一样。当一段程序需要被重复使用时,怎样做才能提高效率呢?将这段程序封装成函数,但是两个跑马灯执行的速度不一样,如何才能让一个函数执行两种不同的运行速度呢? 这里需要用到一个新的函数指令,叫带参函数指令。具体使用方法如下,点击模块中的“函数”,然后点击“自定义模块”,修改函数名为:跑马灯。 注意:关于“带参函数”的相关介绍,见知识园地。 点击“添加输入项”,并将参数名称修改为时长,点击完成,完成带参函数的创建。 带参函数创建成功后,脚本区出现跑马灯函数,并且参数名为时长。 将跑马灯的程序放到函数下,并将程序中的等待时长(0.2),修改为函数参数名时长。 在调用跑马灯函数时,将等待的具体时长,填写到调用函数的参数中即可。 程序实现了灯珠旋转的速度由快到慢,要让灯珠慢到可以停下来,并且停下的位置是随机位置该如何实现呢?在执行一次跑马灯程序,设置调用函数的参数时长为0.3,让灯珠旋转的速度变得更慢。 如何让灯珠停下来,并且停的位置是随机位置?随机位置可以使用随机数指令,新建变量灯珠,将这个变量灯珠赋值为0-11的随机整数。然后将for循环指令的范围设置为:0-变量灯珠(0-11的随机数),程序执行完跑马灯程序后,设置随机数对应的变量灯珠亮起。 (3)行空板显示美食图片 完成了随机美食选择后,还需要将灯珠对应的实物图片显示在行空板上。新建一个美食推荐函数,在随机数变量灯珠亮起后,调用美食推荐函数。函数下使用更新数字参数指令,将首页的背景图片和提示文字隐藏。 要将灯珠对应的美食图片显示到行空板上,使用合并字符串指令,将美食图片的文件名组合为:“美食+变量灯珠+.png”的格式,并使用更新数字参数指令,更新美食图片的宽为200。 最后美食推荐成功后,等待3秒,使用更新数字参数指令隐藏美食图片,行空板界面回到首页的提示界面。完成程序如下: 2.程序运行 点击运行,程序运行成功后,行空板界面上会有美食推荐机器人使用方法的提示。按下按钮后,RGB灯环的灯珠开始旋转,旋转速度由快到慢,然后停下来,行空板上显示灯珠停下对应的美食图片。 注意: 1.在RGB灯环上搭建美食转盘时,RGB灯环的IN接口,对应的灯珠编号为0。因此美食0.png(全家桶图片)需要放在0号灯珠上。 2.图片素材库中提供美食转盘图片,大家可以直接打印使用。 知识园地 1.认识带参函数 什么是带参函数?顾名思义,带参函数就是带有参数的函数。参数,也叫参变量,是一个变量。带参函数,就是在创建函数时,在函数后面同时新建了一个变量。例如下面程序中,时长为跑马灯函数的参数,我们也可以将时长理解为在跑马灯函数中新建了一个变量时长。 在调用带参函数时,因为函数定义了参数,因此调用这个函数时,需要写入具体的参数值,这个过程就称为传入参数。 定义函数名后面的参数时长称为形参,而调用函数的时候传入的具体参数值叫做实参。形参和实参的关系是,形参是用来接收实参的。因此,在调用带参函数时,将参数修改为0.1、0.2、0.3就可以控制灯珠的旋转速度。 2.认识带LED灯的数字按钮模块 什么是按钮?按钮是一种手动控制器,又称为按钮开关。按钮只能短时间接通或者断开电流,因此按钮常用于控制电路当中,向其他电气元件或设备发出指令性的电信号,从而达到控制其他元件或电气设备的目的。 按钮模块主要是由哪些部分组成呢?按钮模块由按钮帽、复位弹簧、支柱连杆、动触点、静触点以及外壳等组成。 按钮是如何工作的呢?手按下按钮,按钮的动触点下移至静触点时接通,手松开时,动触点在弹簧的作用下上移,恢复断开,只有按下才能接通,否则一直断开。带LED灯的数字按模块内部有一个LED灯,当动触点与静触点接通时,LED灯亮起;当动触点与静触点断开时,LED灯熄灭。 3.指令学习 挑战自我 虽然程序实现了为使用者推荐随机美食,但是还有一点小问题,就是当美食推荐完成后,再次推荐美食时,上次的推荐美食的灯珠还是亮起的。接下来,大家修改一下程序,实现当按下按钮时,先将RGB灯环的灯珠全部熄灭,然后再执行跑马灯程序。 附件下载: 第4课 美食推荐机器人2.rar (如有其它问题,请添加微 信咨询:DFRobot2019) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed