63325浏览
查看: 63325|回复: 0

[教程] 【行空板】用Python玩转开源硬件-第03课:心情氛围灯

[复制链接]
第03课:心情氛围灯

忧伤时,紫粉色的灯光围绕着我,淡淡的灯光犹如温暖的怀抱,静静地流淌在心底。开心时,橘黄色的灯光仿佛太阳光一样,温暖又舒适。家庭聚会时,开启灯光舞会模式,蓝色跑马灯完美诠释内心的雀跃,将聚会气氛点染得更加浓烈。听歌时,变幻的霓虹灯,如同在现场看演唱会一般。

心情氛围灯已经超越了“灯”的概念,它不仅仅是照明工具,更是生活的调味品,为生活带来了美好的氛围;同时还可以根据不同的心情和情景,切换不同的灯光效果,这种体验真的太奇妙了!接下来,我们一起使用行空板和RGB灯环,制作一款可以根据心情和场景调节的心情氛围灯吧!

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图1

任务目标

心情氛围灯界面上的每一种表情都对应一种灯光效果。点击忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色;点击舞蹈表情,RGB灯环显示蓝色跑马灯;点击音乐表情,RGB灯环切换随机颜色。


知识点

1. 认识随机数

2. 掌握RGB灯环的使用方法

3. 了解RGB灯的工作原理

材料清单

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图38

软件使用:Mind+编程软件 x1

下载地址:https://mindplus.cc/

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图2

动手实践

心情氛围灯分为心情模式和情景模式,心情模式可以根据忧伤和开心的表情切换灯光颜色;情景模式可以根据舞蹈和音乐表情切换灯光效果。接下来,根据下面两个小任务来学习如何制作一款心情氛围灯。

任务一:制作心情灯

利用图片素材,完成心情氛围灯的控制界面设计,并为忧伤和开心的表情,增加灯光显示。点击忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB显示橘黄色。

任务二:制作情景灯

在任务一的基础上,为舞蹈和音乐这两种情景模式,设计灯光效果。点击舞蹈表情,RGB灯环显示蓝色跑马灯;点击音乐模式,RGB灯环切换随机颜色。

任务一:制作心情灯

1. 硬件连接

使用白色硅胶线将RGB灯环的IN接口连接到行空板的P24引脚,硬件连接成功后,使用USB线将行空板连接到计算机。

注意:关于“RGB灯环”的相关介绍,见知识园地。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图3

2. 软件准备

打开Mind+,按照下面图示完成软件准备工作。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图4

添加WS2812 RGB灯库,点击“扩展”,在pinpong库中找到“WS2812 RGB灯”并点击,完成添加。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图5

3. 编写程序

开始编写程序之前,先来分析一下,这个任务主要是实现哪些功能。首先行空板上会显示心情氛围灯的控制界面,然后通过界面上的忧伤和开心表情,控制RGB灯环显示不同的灯光颜色。在心情氛围灯的控制界面中,用到的对象及对应的坐标如下图所示。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图6


(1)设计控制界面

要设计心情氛围灯在行空板上的控制界面,首先需要将图片文件夹中的背景和表情图片,导入到文件系统中。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图7

使用显示图片指令,在行空板上显示背景与表情图片,根据上面分析的图片坐标,设置图片在对应的XY坐标上显示即可。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图8


然后使用显示文字指令,在行空板上显示“心情氛围灯”,通过更新基准点为中心指令,设置文字在背景图案的正上方显示。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图9


(2)制作灯光显示

这个任务中,主要是实现忧伤表情和开心表情的灯光显示。因此,使用点击回调函数指令与当点击回调函数被触发指令,为“sad”和“smile”对象增加点击回调函数。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图10

要使用RGB灯环,首先需要在Python主程序开始下面,使用RGB灯初始化指令,对RGB灯环的引脚,以及灯环的灯数进行初始化。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图11

从硬件连接图中,可以看到灯环连接到行空板的P24引脚,下面就使用行空板引脚操作中的行空板引脚指令,选择P24引脚,然后将该指令放入RGB灯初始化指令的引脚中,最后设置灯数为12。

注意:关于“RGB灯环”的相关介绍,见知识园地。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图12

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图13

接下来,就需要在当点击回调函数被触发指令下设置RGB灯环颜色。这里以button_click1这个回调函数为例,当忧伤表情被点击后,使用设置灯环颜色指令,设置RGB灯环的颜色为紫粉色。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图14

细心的同学很快就发现了,我们使用的RGB灯环有12个灯珠,不论怎么设置,灯环都只有一个灯珠亮。要实现让灯环的12个灯珠全亮,该怎么做呢?使用for循环指令,设置范围为0-11,步长为1,利用变量my variable,控制每个灯珠都显示紫粉色。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图15

另一个回调函数“button_click2”也以同样的方式,设置灯环的显示颜色为橘黄色。完整程序如下:

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图16

4. 程序运行

点击运行,程序运行成功后,点击行空板屏幕上的忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色。行空板界面与RGB灯环显示效果图如下:

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图17

任务二:制作情景灯

1. 编写程序

在上一个任务的基础上为舞蹈和音乐表情,增加点击回调函数。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图18

(1)制作跑马灯

什么是跑马灯?跑马灯就是每次只亮一个灯珠,并以极快的速度循环,看起来灯珠就如同马一样在灯环上跑。任务一中,实现RGB灯环全亮,是通过for循环,让灯环从无灯珠亮,到亮一个,再到第二个,直到12个灯珠全亮。跑马灯是只亮一个,同样可以使用for循环指令,让灯珠亮0.1秒后,熄灭,这样就可以实现跑马灯了。要让RGB灯熄灭,使用设置灯环颜色指令,设置灯珠的显示颜色为黑色。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图19

上面的程序虽然实现了蓝色灯珠如同马一样在灯环上跑,但是当灯珠跑完一圈后就不再执行了,大家想一想,有没有什么好办法,可以让灯珠在跑完一圈后,重复执行上面的操作。

可以使用标志变量的方法,将跑马灯的程序放在重复执行指令中。新建一个变量flag,并初始化为0,然后在当点击回调函数butoton_click3被触发指令下,定义变量flag为全局变量。当回调函数被触发后,就设置变量flag的值为3。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图20

然后在循环执行指令中,使用条件判断指令,判断回调函数是否被触发(变量flag = 3?),如果是,就执行跑马灯程序。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图21

(2)制作霓虹灯

接下来,就来制作变幻的霓虹灯,让灯环隔循环变幻随机颜色。首先,在当点击回调函数button_click4被触发指令下,将标志变量flag定义为全局变量,并设置变量flag的值为4。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图22

在循环执行指令中,使用条件判断指令,判断回调函数是否被触发(变量flag=4?),如果是,就让RGB 灯环显示变幻霓虹灯。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图23

如何才能使RGB灯环改变颜色呢?使用设置灯环颜色指令,只能从指令的颜色中选择指定颜色,做不到颜色随机改变。灯带指令区还有一个红绿蓝指令,使用的是RGB三原色调色的原理,将这三种颜色混合,得到更多不同的颜色,可以将这两条指令搭配使用。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图24

接下来,就通过改变红绿蓝的值,来设置灯环颜色。分别新建变量R、变量G、变量B,并在Python主程序开始下面,初始化这三个变量的值为0。然后当回调函数被触发后,使用数字类型中的随机数指令让这三个变量,分别生成一个0-255的随机整数。

注意:关于“随机数”的相关介绍,见知识园地。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图25

最后再将变量R、变量G、变量B,分别放入红绿蓝指令中,完整程序如下:

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图26

2. 程序运行

点击运行,程序运行成功后,点击界面上的忧伤表情,RGB灯环显示紫粉色;点击开心表情,RGB灯环显示橘黄色;点击舞蹈表情,RGB灯环显示蓝色流水灯;点击音乐表情,RGB灯环循环切换随机颜色。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图27

3. 试一试


上面的程序,实现了点击心情表情,切换不同的灯光效果。但是多切换几次灯光效果你会发现,当我们切换到舞蹈和音乐的灯光效果后,不能在切回忧伤和开心的灯光效果。因为舞蹈和音乐的灯光效果在循环指令中,而忧伤和开心的灯光效果在回调函数下。接下来,大家尝试在上面程序的基础上进行修改,实现灯光效果可以随意切换。

提示:使用标志变量flag的方式,让忧伤和开心的灯光效果在循环执行指令中实现。

知识园地

1. 认识随机数

什么是随机数?随机数可以简单理解为随机的数字,是从一组可能的值中提取出来的,并且每个可能的值被提取的概率是一样的。举个例子,很多人都玩过掷骰子的游戏,通过掷骰子的方式生成的点数,就是一个 1 到 6 之间的随机数。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图28

例如下面程序,使用随机数指令,设置随机数的范围为1-10。这个指令就如同一个有10个面的骰子,掷骰子生成的点数,就是这个指令生成的随机数。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图29

2. 认识RGB灯

什么是RGB灯?RGB灯其实是属于LED灯的一种,RGB灯内部集成了红、绿、蓝这三个LED灯。可以通过调节这三个LED中的每个灯的亮度就能产生不同的颜色,这样就可以让RGB灯环显示各种颜色了。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图30

RGB灯环有两个接口,分别是IN接口和OUT接口。项目中连接的是IN接口,IN接口用于控制RGB灯环输出,OUT接口用于灯环之间的级联。RGB灯环如何级联呢?使用白色硅胶线将一个灯环的OUT接口与另一个灯环的IN接口连接起来。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图31

RGB灯环如何使用?如何实现变色?RGB灯是把三个颜色的LED灯装在一个灯珠中,只要将这个灯珠当做三个灯使用就可以了。要实现设置RGB灯显示不一样的颜色,可以使用设置RGB灯颜色指令选择颜色。设置RGB灯颜色指令是将常用颜色的RGB值封装成对应的颜色,供我们使用。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图32

而灯环可显示的颜色远远多于该指令中的颜色,因此使用红绿蓝指令,可以生成0-255之间的全部颜色,共16777216种颜色(256x256x256)。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图33

这两条指令都是使用的RGB三原色原理,感兴趣的同学可以动手尝试一下,通过红绿蓝指令,设置不同的值,切换颜色。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图34

3. 指令学习


该指令用于选择行空板上的引脚对象。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图35

挑战自我

在音乐表情的灯光效果中,RGB灯环会循环地切换随机颜色。接下来,大家在该程序的基础上进行修改,将霓虹灯效果修改为彩虹灯效果。循环点亮灯珠的过程中,让每个灯珠的颜色都不一样,实现让RGB灯环如同彩虹一样。RGB灯环显示效果如下图所示:

提示:将变量R、变量G、变量B生成随机数指令,放入for循环指令中。

【行空板】用Python玩转开源硬件-第03课:心情氛围灯图36

附件下载:
下载附件第3课 心情氛围灯.rar
(如有其它问题,请添加微 信咨询:DFRobot2019)


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail