66815| 0
|
[M10教程] 【行空板】用Python玩转开源硬件-第03课:心情氛围灯 |
第03课:心情氛围灯 忧伤时,紫粉色的灯光围绕着我,淡淡的灯光犹如温暖的怀抱,静静地流淌在心底。开心时,橘黄色的灯光仿佛太阳光一样,温暖又舒适。家庭聚会时,开启灯光舞会模式,蓝色跑马灯完美诠释内心的雀跃,将聚会气氛点染得更加浓烈。听歌时,变幻的霓虹灯,如同在现场看演唱会一般。 心情氛围灯已经超越了“灯”的概念,它不仅仅是照明工具,更是生活的调味品,为生活带来了美好的氛围;同时还可以根据不同的心情和情景,切换不同的灯光效果,这种体验真的太奇妙了!接下来,我们一起使用行空板和RGB灯环,制作一款可以根据心情和场景调节的心情氛围灯吧! 任务目标 心情氛围灯界面上的每一种表情都对应一种灯光效果。点击忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色;点击舞蹈表情,RGB灯环显示蓝色跑马灯;点击音乐表情,RGB灯环切换随机颜色。 知识点 1. 认识随机数 2. 掌握RGB灯环的使用方法 3. 了解RGB灯的工作原理 材料清单 软件使用:Mind+编程软件 x1 下载地址:https://mindplus.cc/ 动手实践 心情氛围灯分为心情模式和情景模式,心情模式可以根据忧伤和开心的表情切换灯光颜色;情景模式可以根据舞蹈和音乐表情切换灯光效果。接下来,根据下面两个小任务来学习如何制作一款心情氛围灯。 任务一:制作心情灯 利用图片素材,完成心情氛围灯的控制界面设计,并为忧伤和开心的表情,增加灯光显示。点击忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB显示橘黄色。 任务二:制作情景灯 在任务一的基础上,为舞蹈和音乐这两种情景模式,设计灯光效果。点击舞蹈表情,RGB灯环显示蓝色跑马灯;点击音乐模式,RGB灯环切换随机颜色。 任务一:制作心情灯 1. 硬件连接 使用白色硅胶线将RGB灯环的IN接口连接到行空板的P24引脚,硬件连接成功后,使用USB线将行空板连接到计算机。 注意:关于“RGB灯环”的相关介绍,见知识园地。 2. 软件准备 打开Mind+,按照下面图示完成软件准备工作。 添加WS2812 RGB灯库,点击“扩展”,在pinpong库中找到“WS2812 RGB灯”并点击,完成添加。 3. 编写程序 开始编写程序之前,先来分析一下,这个任务主要是实现哪些功能。首先行空板上会显示心情氛围灯的控制界面,然后通过界面上的忧伤和开心表情,控制RGB灯环显示不同的灯光颜色。在心情氛围灯的控制界面中,用到的对象及对应的坐标如下图所示。 (1)设计控制界面 要设计心情氛围灯在行空板上的控制界面,首先需要将图片文件夹中的背景和表情图片,导入到文件系统中。 使用显示图片指令,在行空板上显示背景与表情图片,根据上面分析的图片坐标,设置图片在对应的XY坐标上显示即可。 然后使用显示文字指令,在行空板上显示“心情氛围灯”,通过更新基准点为中心指令,设置文字在背景图案的正上方显示。 (2)制作灯光显示 这个任务中,主要是实现忧伤表情和开心表情的灯光显示。因此,使用点击回调函数指令与当点击回调函数被触发指令,为“sad”和“smile”对象增加点击回调函数。 要使用RGB灯环,首先需要在Python主程序开始下面,使用RGB灯初始化指令,对RGB灯环的引脚,以及灯环的灯数进行初始化。 从硬件连接图中,可以看到灯环连接到行空板的P24引脚,下面就使用行空板引脚操作中的行空板引脚指令,选择P24引脚,然后将该指令放入RGB灯初始化指令的引脚中,最后设置灯数为12。 注意:关于“RGB灯环”的相关介绍,见知识园地。 接下来,就需要在当点击回调函数被触发指令下设置RGB灯环颜色。这里以button_click1这个回调函数为例,当忧伤表情被点击后,使用设置灯环颜色指令,设置RGB灯环的颜色为紫粉色。 细心的同学很快就发现了,我们使用的RGB灯环有12个灯珠,不论怎么设置,灯环都只有一个灯珠亮。要实现让灯环的12个灯珠全亮,该怎么做呢?使用for循环指令,设置范围为0-11,步长为1,利用变量my variable,控制每个灯珠都显示紫粉色。 另一个回调函数“button_click2”也以同样的方式,设置灯环的显示颜色为橘黄色。完整程序如下: 4. 程序运行 点击运行,程序运行成功后,点击行空板屏幕上的忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色。行空板界面与RGB灯环显示效果图如下: 任务二:制作情景灯 1. 编写程序 在上一个任务的基础上为舞蹈和音乐表情,增加点击回调函数。 (1)制作跑马灯 什么是跑马灯?跑马灯就是每次只亮一个灯珠,并以极快的速度循环,看起来灯珠就如同马一样在灯环上跑。任务一中,实现RGB灯环全亮,是通过for循环,让灯环从无灯珠亮,到亮一个,再到第二个,直到12个灯珠全亮。跑马灯是只亮一个,同样可以使用for循环指令,让灯珠亮0.1秒后,熄灭,这样就可以实现跑马灯了。要让RGB灯熄灭,使用设置灯环颜色指令,设置灯珠的显示颜色为黑色。 上面的程序虽然实现了蓝色灯珠如同马一样在灯环上跑,但是当灯珠跑完一圈后就不再执行了,大家想一想,有没有什么好办法,可以让灯珠在跑完一圈后,重复执行上面的操作。 可以使用标志变量的方法,将跑马灯的程序放在重复执行指令中。新建一个变量flag,并初始化为0,然后在当点击回调函数butoton_click3被触发指令下,定义变量flag为全局变量。当回调函数被触发后,就设置变量flag的值为3。 然后在循环执行指令中,使用条件判断指令,判断回调函数是否被触发(变量flag = 3?),如果是,就执行跑马灯程序。 (2)制作霓虹灯 接下来,就来制作变幻的霓虹灯,让灯环隔循环变幻随机颜色。首先,在当点击回调函数button_click4被触发指令下,将标志变量flag定义为全局变量,并设置变量flag的值为4。 在循环执行指令中,使用条件判断指令,判断回调函数是否被触发(变量flag=4?),如果是,就让RGB 灯环显示变幻霓虹灯。 如何才能使RGB灯环改变颜色呢?使用设置灯环颜色指令,只能从指令的颜色中选择指定颜色,做不到颜色随机改变。灯带指令区还有一个红绿蓝指令,使用的是RGB三原色调色的原理,将这三种颜色混合,得到更多不同的颜色,可以将这两条指令搭配使用。 接下来,就通过改变红绿蓝的值,来设置灯环颜色。分别新建变量R、变量G、变量B,并在Python主程序开始下面,初始化这三个变量的值为0。然后当回调函数被触发后,使用数字类型中的随机数指令让这三个变量,分别生成一个0-255的随机整数。 注意:关于“随机数”的相关介绍,见知识园地。 最后再将变量R、变量G、变量B,分别放入红绿蓝指令中,完整程序如下: 2. 程序运行 点击运行,程序运行成功后,点击界面上的忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色;点击舞蹈表情,RGB灯环显示蓝色流水灯;点击音乐表情,RGB灯环循环切换随机颜色。 3. 试一试 上面的程序,实现了点击心情表情,切换不同的灯光效果。但是多切换几次灯光效果你会发现,当我们切换到舞蹈和音乐的灯光效果后,不能在切回忧伤和开心的灯光效果。因为舞蹈和音乐的灯光效果在循环指令中,而忧伤和开心的灯光效果在回调函数下。接下来,大家尝试在上面程序的基础上进行修改,实现灯光效果可以随意切换。 提示:使用标志变量flag的方式,让忧伤和开心的灯光效果在循环执行指令中实现。 知识园地 1. 认识随机数 什么是随机数?随机数可以简单理解为随机的数字,是从一组可能的值中提取出来的,并且每个可能的值被提取的概率是一样的。举个例子,很多人都玩过掷骰子的游戏,通过掷骰子的方式生成的点数,就是一个 1 到 6 之间的随机数。 例如下面程序,使用随机数指令,设置随机数的范围为1-10。这个指令就如同一个有10个面的骰子,掷骰子生成的点数,就是这个指令生成的随机数。 2. 认识RGB灯 什么是RGB灯?RGB灯其实是属于LED灯的一种,RGB灯内部集成了红、绿、蓝这三个LED灯。可以通过调节这三个LED中的每个灯的亮度就能产生不同的颜色,这样就可以让RGB灯环显示各种颜色了。 RGB灯环有两个接口,分别是IN接口和OUT接口。项目中连接的是IN接口,IN接口用于控制RGB灯环输出,OUT接口用于灯环之间的级联。RGB灯环如何级联呢?使用白色硅胶线将一个灯环的OUT接口与另一个灯环的IN接口连接起来。 RGB灯环如何使用?如何实现变色?RGB灯是把三个颜色的LED灯装在一个灯珠中,只要将这个灯珠当做三个灯使用就可以了。要实现设置RGB灯显示不一样的颜色,可以使用设置RGB灯颜色指令选择颜色。设置RGB灯颜色指令是将常用颜色的RGB值封装成对应的颜色,供我们使用。 而灯环可显示的颜色远远多于该指令中的颜色,因此使用红绿蓝指令,可以生成0-255之间的全部颜色,共16777216种颜色(256x256x256)。 这两条指令都是使用的RGB三原色原理,感兴趣的同学可以动手尝试一下,通过红绿蓝指令,设置不同的值,切换颜色。 3. 指令学习 该指令用于选择行空板上的引脚对象。 挑战自我 在音乐表情的灯光效果中,RGB灯环会循环地切换随机颜色。接下来,大家在该程序的基础上进行修改,将霓虹灯效果修改为彩虹灯效果。循环点亮灯珠的过程中,让每个灯珠的颜色都不一样,实现让RGB灯环如同彩虹一样。RGB灯环显示效果如下图所示: 提示:将变量R、变量G、变量B生成随机数指令,放入for循环指令中。 附件下载: 第3课 心情氛围灯.rar (如有其它问题,请添加微 信咨询:DFRobot2019) |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed