Hi~ (o^^o)♪, 各位深海王国的同志们,早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω)
今天大都督继续为大家带来系列——小学生都能玩的语音模块,帮你一周内快速学会语音模块的使用方式,打造一个可用于智能家居、物联网领域的语音助手,let’s go!
(6)WS2812灯带的简单控制与RGB调色介绍
上节我们已经熟悉了天问BLOCK的WS2812拓展库,这节我们就来简单控制一下吧。
WS2812接线图如下:
(图片摘自官方说明文档,链接在这里)
这里说明一下,如果我们使用的灯珠数比较少,是可以这样直接用单片机的5V引脚给灯带供电的,但如果灯珠数目多,就需要外接电源了(大都督试过120个灯珠以下基本都能正常供电)。
我们已经介绍了WS2812拓展库的相关代码(详见(5)拓展库的添加与WS2812灯带介绍)),并且也知道天问BLOCK怎么下载程序(详见(3)天问BLOCK程序下载与常见问题),现在我们就来进行WS2812拓展库的功能演示。
这是大都督自己用3D打印做的一个手办展架(关于3D打印与建模的知识也会在后续系列中放出,大家可以持续关注哦),
下面就是WS2812灯带,现在我们来用这个展架进行一下功能演示:
初始配置代码:
因为是代码测试,所以我们初始代码不需要太复杂,如下即可:
这里需要说一下,在我们初始RGB时要根据灯带上灯珠的数量进行初始化,比如这里我用的就是30灯珠灯带。
另外如果我们需要更改如switch分支数量等代码块信息,点击代码块左上角的蓝齿轮图标即可:
WS2812拓展库各代码功能展示:
1. 控制单个灯按指定颜色亮起
控制灯按指定颜色亮起有两种实现方式,一种是通过官方预设的颜色,如下:
另一种就是RGB调色,不懂RGB是什么的可以参考本文最后的RGB介绍。
现在我们控制指定灯1号和30号按指定颜色亮起对应代码分别如下:
加上RGB显示,将其放在case1中即可,暂时用不到的代码,我们可以鼠标右键点击禁用块,暂时禁用该代码块。
最后实现效果如图:
2.控制所有灯全部熄灭
开灯之后自然还需要关灯,关灯代码如下:
将它放到case2中即可:
3.控制所有灯指定颜色亮起
代码如下,将对应代码放到case1中即可:
演示效果如图:
4.彩虹循环与流光溢彩效果
代码如下,彩虹循环效果就是各个灯珠循环变色,流光溢彩就是全体灯珠一起颜色渐变。
这里注意间隔时间不是整个效果持续时间,而是不同颜色的渐变时间间隔:
效果如下,大家可以更改不同的ms毫秒数试试其他效果:
如果需要本节的工程文件,在咱们深海王国的公众号「深海大都督」里回复「语音控制灯带」就可以啦。
为什么要使用多线程?
在进行彩虹循环和流光溢彩效果的过程中,我们会发现,喊指令关灯,ASRPRO并不会让我们的灯带灭掉,而是无视了我们的指令,只有等彩虹循环流光溢彩效果结束后,我们喊指令关灯才有效。
核心原因就是目前我们的单片机是单线程运行。
简单来说,就是现在单片机比较傻比较一根筋,只能同时做一件事。
要不去执行流光溢彩效果(实际上这个效果是个条件循环结构,在没执行完整个效果前,程序都会卡在while循环里一直运行),要不去听我们的指令,二者不可得兼。
这时候就要使用我们的多线程模式了,下节我们就来解决这个问题。
附:RGB调色介绍
RGB调色是一种基于光的加色模式,主要应用于电视、计算机屏幕、手机屏幕以及其他电子显示设备上。它由红色(Red)、绿色(Green)、蓝色(Blue)三种颜色的光合成而成,通过调整这三种颜色光的亮度或比例,可以产生几乎所有可感知的颜色。
RGB色彩模式是数字技术中广泛使用的颜色系统,其工作原理是基于人类视觉对光的感应。在RGB模式中,每种颜色都是通过指定红、绿、蓝三个颜色通道的强度来定义的。这些强度通常用0到255的数字表示,其中0表示该颜色通道不发光,而255表示该通道发光强度最大。例如,纯红色表示为(255, 0, 0);纯绿色表示为(0, 255, 0);纯蓝色表示为(0, 0, 255);黑色表示为(0, 0, 0),因为所有颜色通道都不发光;而白色表示为(255, 255, 255),所有颜色通道都以最大强度发光。通过这种方式,可以混合出多种颜色。
今天的学习到这里就差不多啦。下节我们就开始ASRPRO多线程模式的学习,加油!看到这里的你今天也辛苦啦٩(ˊᗜˋ)و✧。
需要的相关材料链接我都放在公众号「深海大都督」里了,回复「语音控制灯带」就能获得啦~
哈哈,让焦虑不再蔓延,信息不再高壁,如果你觉得这篇文章对你有帮助,就来个免费的点赞吧!
(◍˃̶ᗜ˂̶◍)✩我深海大都督正式授予你深海王国公民的身份~
(・ω< )★ 加入深海大家庭,快乐摆烂每一天!