忘了时间的钟……(掌控与Ws2812)
本帖最后由 rzyzzxw 于 2019-12-10 09:22 编辑忘了时间的钟,滴滴答答的错……
没有滴滴答答,钟,或许就不会忘记时间了……
也许你看惯了带针的时钟,也许你厌倦了液晶数字的电子钟,那我们今天一起来用掌控版+WS2812B制作一个环形灯光时钟。
所需元器件:掌控板1个,WS2812b环形灯珠(带?)——60珠?24珠?——都没问题,杜邦线若干。
一、WS2812B环形灯珠(带)
1、焊接方法
如果您购买的是这种灯带,那就得将其轻轻的掰开,然后用电烙铁焊好,本人焊工一般,也就不上图了,刚好有个新的,拍照画线。
百灵鸽接法如下:VCC接V、GND接G、Din接S pin13
掌控宝接法如下:VCC接3v3、GND接GND、Din接P13 注意:Din(DI)是信号输入,DOut(DO)为输出,接Din可扩展灯带。
如果你仅仅是做一个实验,用灯带是一个不错的选择,因为60灯珠的灯带不需要焊接,省去很多功夫哦。
2、灯珠的位置是0还是1?
这个问题……直接用代码测试一下,马上得到答案了,哈哈……实践见真知。
3、灯环(带)测试
还是老方法咯,把每个灯珠都点亮一遍,测试是否有坏灯,没有的话记得给老板一个好评。
二、掌控获取网络时间
为了准确显示时间,我们还是利用掌控的WIFI功能获取网络时间,操作非常简单,参考代码如下图所示,连接WiFi,当成功连接WiFi,同步网络时间(默认东八区——北京时间即可)。
然而,运行代码后发现,“否则”语句然并卵——当WiFi连接失败的时候,OLED屏并不会显示“WiFi连接失败”,直接报错,嘿嘿。
好了,接下来该去实现我们的灯光时钟了。
三、时分秒与灯珠的对应关系
PS:本地时间(时)的灯珠位置显示是本次内容的一个难点。
我们知道,表盘钟有60个小格,秒和分直接按照读数来显示其位置即可,那如何准确的点亮表示时数的灯的位置呢?
①时数与位置
通过表盘图,我们可以清晰的看到——小时数是每5格1读数,因此,表示“时”灯位应该是时数×5,因为获取的网络时间是24小时制,因此,要将其转换为12小时制,通过求余的方法可以实现:即:“获取本地时间(时)除以24的余数×5”。
②分钟的微调
中间还有5个小格如何处理? 1小时=60分,60÷5=12,可以得到,时针在每12分钟走1小格,这里就通过求商来实现,即:“获取本地时间(分)除以12的商”
综合①② 得:“时”灯数 =获取本地时间(时)除以24的余数×5 + 获取本地时间(分)除以12的商。
四、流程图
五、参考代码
最后,贴心一点,利用掌控的光线传感器来控制一下灯珠的亮度,当白天的时候,灯珠亮一点,到了晚上,灯珠就稍暗咯。
这个权当是一个作业,还是留给大家去做吧。
六、过程中的尝试:
在过程当中,尝试利用OLED屏加上“图形化时钟”,发现三颗灯珠都在闪;也尝试了仅以数字形式(00:00:00)显示时钟,结果也是一样,闪啊闪,最后不得不放弃OLED屏显示时钟。
附视频效果:
https://v.qq.com/x/page/z3032q0fvcf.html
估计是LED灯控制和OLED屏时间显示两者结合,时序安排有差别导致。
七、迟来的代码(掌控第一漂讲课案例:24灯时钟)
本是掌控第一漂我上课的案例,当时用的掌控漂流套件里的24灯光环板制作的时钟,因为懒得当初码字,现在一并送上。
最后,配个3D打印件,当成一个小摆件送人,还是很漂亮哦,来自小杨童鞋的设计。
我们也给60灯珠配了个激光切割的面板,中间空白广告位置--虚位以待!
(此显示效果不在教程中,可以自行完善代码)
八、最后两个效果视频
60灯珠
https://v.qq.com/x/page/e3032ten42p.html
60灯带
https://v.qq.com/x/page/r3032c3jfki.html
吹爆掌控
页:
[1]