6758浏览
查看: 6758|回复: 5

【开源】创客奶爸手把手教你制作拟辉光管时钟

[复制链接]
【开源】创客奶爸手把手教你制作拟辉光管时钟图1


图 1- 1 拟辉光管时钟

#项目起源#

大家好,我是旺仔爸爸,大家一定还记得那个不久前为了庆祝建党100周年而制作的灯饰作品,其中用到了一块RGB灯板,这次旺仔爸爸用剩余的几块灯板制作了一款拟辉光管时钟


【开源】创客奶爸手把手教你制作拟辉光管时钟图2


图 1- 2 建党百年灯饰作品


下面我们就来看一下作品的制作过程,当然拟辉光管时钟网上有很多种版本,旺仔爸爸目前还不知道这个创意的原创作者,不过我们还是要向拟辉光管时钟的原创者致以崇高的敬意

#视频展示#



#方案介绍#

要做一款拟辉光管时钟,首先我们得了解一下什么是辉光管


【开源】创客奶爸手把手教你制作拟辉光管时钟图3


图 1- 3 辉光管


辉光管是前苏联生产的一种电子管,曾经在大型电子计算机及后期的古董级计算器上起到显示输出的作用,随着技术的飞速发展早已退出历史舞台,它工作时通过高压击穿惰性气体在阴极附近发出橘黄色的光,我们可以把它简单理解为拥有从0到9共10层灯丝的灯泡


现在辉光管已经停产绝版,现存数量有限让其价格不菲,且辉光管是上个世纪的产物,工作电压高,产品寿命短,技术相对落后。不过,一些怀旧技术派发现了辉光管的剩余价值,利用其独特的显示效果打造出了形态各异的辉光管时钟,令本来壮士暮年的辉光管又焕发出了第二春


而我们本次作品则是另辟蹊径,在亚克力上雕刻数字划痕模拟辉光管时钟的效果,当LED光照射在亚克力上,光线在亚克力上的划痕处发生散射、折射使得有数字划痕处的发光效果和亮度更清晰,而没有划痕的地方颜色较浅,如此一来就可以解决辉光管昂贵,高压和寿命的问题,用现代科技复原上古神器的美


【开源】创客奶爸手把手教你制作拟辉光管时钟图4


图 1- 4 拟辉光管时钟


拟辉光管时钟与之前建党百年灯饰作品最大的区别是RGB灯板由1个变为了6个


【开源】创客奶爸手把手教你制作拟辉光管时钟图5


图 1- 5 RGB灯板


同时图案由原来的典型历史事件变为了六组0-9的数字,相应的体积也增加了


【开源】创客奶爸手把手教你制作拟辉光管时钟图6


图 1- 6 数字亚克力灯片


在时间获取方面,我们采用了可联网的ESP32控制器作为主控,通过访问NTP时间服务器实时获取时间,作品中使用了一个声音传感器增加音频律动功能,在底部使用一段WS2812灯带作为作品的氛围灯,使用一块锂电池为设备供电,方便携带


【开源】创客奶爸手把手教你制作拟辉光管时钟图7


图 1- 7 拟辉光管时钟用到的电子器件

#设计制作#

方案确定后,我们即可展开制作,先来看一下制作拟辉光管时钟所需的物料

#器材清单#



  • ESP32控制器*1

  • RGB灯板*6

  • WS2812灯带一截(20颗灯珠)

  • 声音传感器*1

  • 3.7V锂电池*1

  • 自锁开关*1

  • 400mm*400mm黑色、透明亚克力板(厚度2mm、3mm、5mm各一张)

  • 3mm黑胡桃木板(160mm*400mm)

  • 五金件若干

  • 导线及下载线







【开源】创客奶爸手把手教你制作拟辉光管时钟图8


图 1- 8 拟辉光管时钟器材清单

#结构设计#

这次我们在结构设计方面继续采用了叠加的方式,拟辉光管的底座使用5mm的黑色亚克力板叠加,而上面亚克力灯片部分结构沿用建党百年灯饰作品的设计,固定的通孔以圆弧的形式放置在了四个角。


为了方便下载程序,中间层的亚克力设计成了半开放的状态,这次我们选择了一款带灯光的开关安装在了面板的右侧。


为了透光且灯珠发出的光相互之间不影响,我们需要设计一款正好透光的亚克力片,而在底部还需要增加一段灯带透光孔位。


在拟辉光管底座的面板和亚克力灯片的顶部增加了黑胡桃木板修饰增加美观性


使用Fusion360计算机辅助设计软件设计三维模型如下图1-9


【开源】创客奶爸手把手教你制作拟辉光管时钟图9


图 1- 9 拟辉光管时钟3维模型


之后,将三维模型转换成二维设计图纸并使用激光切割机加工出来


【开源】创客奶爸手把手教你制作拟辉光管时钟图10


图 1- 10 拟辉光管时钟平面设计图


激光切割机加工完成后的零件实物如图1-11


【开源】创客奶爸手把手教你制作拟辉光管时钟图11


图 1- 11 激光切割加工后的零件实物图

#电路设计#

电路设计包括RGB灯板PCB设计和电路接线两部分


RGB灯板PCB设计


RGB灯板的原理图与建党百年灯饰作品一致,主要部件有WS2812灯珠,无声轻触按键和几个电容电阻组成,每块RGB灯板中有20颗WS2812灯珠以及按键的输入信号端口和灯珠的输入、输出信号端口,使用这些接线端口可以将6块灯板串联在一起


【开源】创客奶爸手把手教你制作拟辉光管时钟图12


图 1- 12 RGB灯板电路原理图


绘制好原理图后就可以将原理图生成PCB文件了,紧接着我们根据原理图进行布线


【开源】创客奶爸手把手教你制作拟辉光管时钟图13


图 1- 13 RGB灯板PCB设计图


PCB设计完成后切换至三维模式查看3D效果,如图1-14


【开源】创客奶爸手把手教你制作拟辉光管时钟图14


图 1- 14 RGB灯板PCB三维效果图


最后检查没有问题后就可以送去打样了


拿到PCB电路板后我们开始焊接


彩蛋:如果你不会设计电路又想要制作拟辉光管时钟的话,可以在文末获取PCB灯板文件

#材料清单#

RGB灯板用到的焊接元件可以和PCB打样同步进行准备,焊接材料如下:



  • WS2812灯珠*120


  • 100nF电容*18


  • 无声轻触按键*2


  • 10K电阻*6


  • XH2.54接线端子(3PIN)*12



由于拟辉光管时钟只在两块RGB灯板上用到了轻触按键,在焊接时只需要准备两个即可,元件准备齐全后,我们使用电熨斗回流焊加热平台进行焊接


【开源】创客奶爸手把手教你制作拟辉光管时钟图15


图 1- 15 RGB灯板焊接


【开源】创客奶爸手把手教你制作拟辉光管时钟图16


图 1- 16 RGB灯板焊接


焊接完成效果如下图1-17所示


【开源】创客奶爸手把手教你制作拟辉光管时钟图17


图 1- 17 RGB灯板焊接完成


电路接线设计


RGB灯板焊接完成后,我们需要将主控与几块RGB灯板串联起来然后进行功能测试,接线图如图1-18


【开源】创客奶爸手把手教你制作拟辉光管时钟图18


图 1- 18 拟辉光管电路接线图


各个模块与ESP32主控连接的引脚定义如下表1


表1


【开源】创客奶爸手把手教你制作拟辉光管时钟图19


从接线图中我们可以看出在RGB灯板前面我们增加了一段WS2812灯带其作用是作为氛围灯安装在底部位置


电路设计完成后就可以进入激动人心的组装环节了

#组装#

拟辉光管时钟组装大致分成三部分


第一部分为灯光显示部分,我们需要使用2mm的螺丝将开关和6块RGB灯板安装在黑胡桃木板上


【开源】创客奶爸手把手教你制作拟辉光管时钟图20


图 1- 19组装灯光显示部分所需零件


【开源】创客奶爸手把手教你制作拟辉光管时钟图21


图 1- 20 将RGB灯板安装在黑胡桃木板上


这里我们采用了一颗带有灯光功能的自锁开关,提前将导线与开关进行焊接方便与电池和控制器接线


【开源】创客奶爸手把手教你制作拟辉光管时钟图22


图 1- 21 安装自锁开关


开关安装完成后如下图1-22


【开源】创客奶爸手把手教你制作拟辉光管时钟图23


图 1- 22 自锁开关安装完成


之后将5mm亚克力透光板和2mm亚克力灯片定位板安装在黑胡桃木板上,并使用滚花铜柱固定,安装完成如下图1-23和图1-24


【开源】创客奶爸手把手教你制作拟辉光管时钟图24


图 1- 23 安装固定透光板和定位板


【开源】创客奶爸手把手教你制作拟辉光管时钟图25


图 1- 24 透光板、定位板安装完成


接着,使用3PIN连接线将每块RGB灯板连接在一起,这样灯光显示部分就安装完成了


【开源】创客奶爸手把手教你制作拟辉光管时钟图26


图 1- 25 使用连接线将RGB灯板连接在一起


【开源】创客奶爸手把手教你制作拟辉光管时钟图27


图 1- 26 RGB灯板连接完成


第二部分,我们需要安装底座,底座包含WS2812灯带、主控、锂电池以及声音传感器,所需部件如下图1-27


【开源】创客奶爸手把手教你制作拟辉光管时钟图28


图 1- 27 安装底座需要的零件


用螺丝将以上部分按照实际的定位孔安装固定,安装完成如下图1-28


【开源】创客奶爸手把手教你制作拟辉光管时钟图29


图 1- 28 底座安装完成


底座部分安装完成后,我们需要将灯光显示部分和底座部分拼接在一起


【开源】创客奶爸手把手教你制作拟辉光管时钟图30


图 1- 29 将灯光显示部分和底座部分拼装在一起


并使用螺丝配合滚花铜柱固定,如图1-30


【开源】创客奶爸手把手教你制作拟辉光管时钟图31


图 1- 30 灯光显示部分和底座拼接完成


拼接完成后如下图1-31和图1-32所示


【开源】创客奶爸手把手教你制作拟辉光管时钟图32


图 1- 31 灯光显示部分和底座拼接完成


【开源】创客奶爸手把手教你制作拟辉光管时钟图33


图 1- 32 灯光显示部分和底座拼接完成


第三部分,我们安装亚克力灯片,先将上层亚克力灯片定位板安装在滚花铜柱上,然后将撕掉保护膜的6组0-9的数字亚克力灯片依次安装在两层灯片定位板中间


【开源】创客奶爸手把手教你制作拟辉光管时钟图34


图 1- 33 安装亚克力灯片和灯片定位板


【开源】创客奶爸手把手教你制作拟辉光管时钟图35


图 1- 34 数字亚克力灯片安装完成


亚克力灯片安装完成后,我们在每组亚克力灯片上方安装顶板,顶板由黑色、透明色亚克力板和黑胡桃装饰木板组成,如图1-35


【开源】创客奶爸手把手教你制作拟辉光管时钟图36


图 1- 35 安装顶部零件


最后,我们撕掉亚克力保护膜,拟辉光管时钟组装就完成了


【开源】创客奶爸手把手教你制作拟辉光管时钟图37


图 1- 36 拟辉光管时钟组装完成


【开源】创客奶爸手把手教你制作拟辉光管时钟图38


图 1- 37


来看一下演示效果


氛围灯模式


【开源】创客奶爸手把手教你制作拟辉光管时钟图39


图 1- 38 氛围灯模式


【开源】创客奶爸手把手教你制作拟辉光管时钟图40


图 1- 39 氛围灯模式


【开源】创客奶爸手把手教你制作拟辉光管时钟图41


图 1- 40 氛围灯模式


时间模式(同色)




图 1- 41 时间模式(同色)


时间模式(彩色)




图 1- 42 时间模式(彩色)


【开源】创客奶爸手把手教你制作拟辉光管时钟图42


图 1- 43 时间模式(彩色)


音频律动模式


【开源】创客奶爸手把手教你制作拟辉光管时钟图43


图 1- 44 音频律动模式


组装完成后,最后就是程序设计了,开始程序设计前,我们需要先理清楚思路

#程序设计#

这是拟辉光管时钟程序设计的思路,分为几种控制方式,时间模式,音频律动模式,氛围灯模式,颜色切换等,拟辉光管时钟用到了2个轻触按键,其中1号轻触按键用来切换颜色,2号轻触按键用来切换模式


【开源】创客奶爸手把手教你制作拟辉光管时钟图44


图 1- 45 程序设计思维导图


【开源】创客奶爸手把手教你制作拟辉光管时钟图45


图 1- 46 RGB灯板和按键布局示意图


简单了解编程思路后我们开始编写程序


本次的程序设计我们采用Mixly编程环境,如果你还没有安装编程环境,可以在<mixly.org>官网下载最新版本的Mixly软件并安装

Mixly程序设计

软件下载完成后,打开Mixly软件,右下方选择Arduino ESP32主控板,在主控板旁边选择相对应的串口号即可为主控板编写并下载程序了


【开源】创客奶爸手把手教你制作拟辉光管时钟图46


图 1- 47 选择主控和端口


本次作品程序设计的核心为RGB灯的控制,再结合按键达到我们想要的效果


第一步,我们先从简单的板载按键入手


编写串口打印程序来查看按键的状态,下载如下程序,程序中1号轻触按键连接16号引脚,观察串口监视器中输出的数据可以发现,当按键按下时输出低电平也就是“0”,当松开按键是输出高电平也就是“1”,由此可知,板载按键是低电平有效,查看电路原理图也可以发现这个按键其实接的是一个上拉电阻


【开源】创客奶爸手把手教你制作拟辉光管时钟图47


图 1- 48 轻触按键测试


1号轻触按键能够控制后,2号轻触按键的控制原理类似,只需将16号引脚更改为17号引脚即可,这里就不再详细介绍了


知道了按键的状态,我们就可以通过判断按键是否按下,按了几次或者是否长按来执行相应的任务了,比如我们设置按键按下一次随机切换一种颜色


不过磨刀不误砍柴工,将亚克力点亮的实质其实就是对RGB灯的控制,我们先来掌握一些RGB灯编程的基础方法,再将RGB灯与按键结合变换多彩的颜色


第二步,RGB灯的控制


编写RGB灯的程序需要用到下图1-49所示的程序块


【开源】创客奶爸手把手教你制作拟辉光管时钟图48


图 1- 49 RGB灯程序块


要点亮RGB灯,需要对RGB灯进行初始化设置,需要设置的内容有RGB的控制管脚,灯珠的数量以及RGB灯的亮度,我们本次作品用到了6块RGB灯板和一段20颗灯珠的灯带,共有140颗灯珠所以灯数设置为140,亮度的调节范围是0-255,我们设置亮度为100,如果设置的数值大于255,Mixly中默认会将输入的数值除以255的余数作为灯珠的亮度


RGB灯初始化的程序设置完成后,我们一起编写一个程序来控制RGB灯点亮,编写下图1-50的程序下载后会看到拟辉光管时钟底部的氛围灯依次全部亮红色了


【开源】创客奶爸手把手教你制作拟辉光管时钟图49


图 1- 50 点亮1-20号灯珠


程序中用到了一个“for”循环语句,设置1-20号灯珠每隔100毫秒点亮一个,点亮灯珠的颜色为红色,需要注意的是每次点亮RGB灯都需要增加“RGB灯设置生效”的程序块才达到预期的效果


其实,我们除了可以使用程序块内置的颜色来实现颜色调节外,还可以通过调节RGB的数值来调节出更加丰富的颜色,比如将"R"的值设置为255时同样会显示红色,程序如下图1-51


【开源】创客奶爸手把手教你制作拟辉光管时钟图50


图 1- 51 R、G、B调节颜色


其中"R"、"G"、"B"的数值可以在0-255之间调节,理论上可以调节出256*256*256种颜色,如果将RGB的数值都设置为0则显示黑色,也就是灯珠熄灭,如果将RGB的数值都设置为255则显示白色


当我们实现了底部的氛围灯点亮并调色,点亮其他的RGB灯也是没有问题的,我们可以根据下图1-52的灯珠编号示意图来编写程序控制其它RGB灯点亮


【开源】创客奶爸手把手教你制作拟辉光管时钟图51


图 1- 52 灯珠编号示意图


比如,修改上面的程序,将循环的起始数字设置为21,终止数字设置为40,下载程序后会发现1号灯板上的20颗灯珠亮红色,如果要点亮其余灯板修改灯珠编号即可,这里不再展开介绍,具体方法可以在后面的程序中查看


【开源】创客奶爸手把手教你制作拟辉光管时钟图52


图 1- 53 设置1号灯板亮红色


能够将任意范围内的RGB灯板点亮后,我们可以封装一些函数,实现一些炫酷的效果


下面我们设置一个显示黑色的函数,这样在需要熄灭RGB灯时就可以直接使用这个函数,程序如图1-54


【开源】创客奶爸手把手教你制作拟辉光管时钟图53


图 1- 54 灯珠熄灭函数


不过,由于我们在使用过程中,有时需要分段熄灭灯珠,我们还可以将上述程序继续修改,如图1-55


【开源】创客奶爸手把手教你制作拟辉光管时钟图54


图 1- 55 任意灯珠熄灭函数


我们在程序中增加“x”、“y”两个参数,这样在调用函数时只需要修改灯珠编号即可实现熄灭任意灯珠,这时有朋友会想到,将程序中的黑色设置为其他颜色,这样不就可以随意控制灯珠显示各种颜色了吗?没错,完全可以,有兴趣的朋友可以去试试


这里我们再展示一个常见的氛围呼吸灯的控制程序,程序如下图1-56


【开源】创客奶爸手把手教你制作拟辉光管时钟图55


图 1- 56 氛围呼吸灯函数


程序中,我们先设置1-140号灯珠亮黄色,然后使用循环将其亮度从1增加到100,随后再使用循环将其亮度从100减小到1,如此就实现了氛围呼吸灯的效果,我们将该程序封装在一个“Blink”的函数中方便调用


到现在为止,我们已经掌握了RGB灯的基础用法,接下来,我们将按键和RGB灯结合做一些有趣的案例


第三步,按键与RGB灯结合


编写按键的程序,我们需要设置按键单击、双击、长按等功能,这就需要用到多功能按键程序块,如图1-57


【开源】创客奶爸手把手教你制作拟辉光管时钟图56


图 1- 57 多功能按键程序块


我们设置按键为16号管脚,低电平触发,每当单击按键时1-20号灯珠随机亮一种颜色,为了产生随机的颜色,在程序中我们使用了随机数的程序块,并将产生的随机数赋予“R、G、B”三个变量,程序如下图1-58


【开源】创客奶爸手把手教你制作拟辉光管时钟图57


图 1- 58 轻触按键随机调色


我们还可以继续修改程序,将随机变量的范围设置为随机数,这样颜色随机搭配的概率会进一步提高


【开源】创客奶爸手把手教你制作拟辉光管时钟图58


图 1- 59 提高颜色随机搭配的概率


现在我们成功设置了1号轻触按键切换颜色,接着我们使用2号轻触按键来实现一些有趣的效果


我们先来观察RGB灯板图1-60,可以看出每块RGB灯板中20颗灯珠是有序排列的,在PCB板设计时为了走线方便,单数列灯珠按照由上往下顺序排列,双数列灯珠按照由下往上的顺序排列,而每一块RGB灯板有10片亚克力板,也就是每2颗RGB灯点亮一片亚克力板,以1号RGB灯板为例,灯板上灯珠的编号为21-40,每片亚克力被点亮的灯珠组合方式为1、3列编号为21-31、22-32、23-33、24-34、25-35的灯珠;2、4列编号为26-36、27-37、28-38、29-39、30-40的灯珠




图 1- 60 1号灯板灯珠编号示意图


我们假设RGB灯板平放,按键朝向为正前方,而如果要让亚克力板由前往后点亮的话,则需要先点亮双数列的第一个组合26-36,接着点亮单数列的第一个组合25-35,以此类推,10次后可以将RGB灯板上的灯珠两两一组依次前后点亮(也就是亚克力灯片上0-9的数字依次点亮)


那么对应的程序该如何设置呢,因为是单数列和双数列的切换,这时候我们可以采用判断奇偶数的方法来切换


我们使用一个“for”循环,从0-9循环10次,同时判断循环每次数字的奇偶性,奇数就点亮单数列,偶数就点亮双数列,并将该程序封装在一个“DisplayLed”的函数中,设置当2号轻触按键按下时调用此函数,程序如下图1-61,程序下载后,每按一次2号轻触按键,1号灯板上的灯珠会由前往后依次点亮


【开源】创客奶爸手把手教你制作拟辉光管时钟图59


图 1- 61 从前往后点亮控制函数


既然1号灯板的灯珠可以依次点亮,同样的,所有灯板上灯珠同时由前往后依次点亮的原理和1号灯板类似,我们参照下图1-62的灯珠编号示意图编写程序


【开源】创客奶爸手把手教你制作拟辉光管时钟图60


图 1- 62 灯板编号示意图


与点亮一块灯板不同的是,我们需要使用一个循环将1-6号灯板最前面为数字0的亚克力灯片点亮,然后再循环9次将所有1-9的亚克力灯片依次点亮,程序如下图1-63


【开源】创客奶爸手把手教你制作拟辉光管时钟图61


图 1- 63 从前往后依次点亮亚克力板程序


如果从前往后(0-9)的顺序可以点亮,从后往前(9-0)的顺序点亮也应该非常容易实现,我们继续修改程序,在程序中,我们封装了一个“UpDown”的函数,在该函数中调用了“DisplayLed”函数,通过函数之间的相互调用可以进一步简化程序,程序如下图1-64所示


【开源】创客奶爸手把手教你制作拟辉光管时钟图62


图 1- 64 从前往后点亮和从后往前熄灭亚克力板程序


程序下载后,按下2号轻触按键会看到1-6号灯板上的灯珠从前往后依次点亮,接着又从后往前依次熄灭,值得注意的是,函数“Black”中设置“RGB灯生效”的程序块放在循环里面和循环外面的效果是不一样的,感兴趣的伙伴可以去调整试试看有什么不同效果


拟辉光管时钟数字灯片从前往后和从后往前的效果我们已经实现,有的伙伴会想到,从左往右或从右往左该如何实现呢?


实现从左往右点亮直接将21-140号灯珠依次点亮不就可以了吗?如果你对RGB灯板上的灯珠排列顺序还有印象的话,直接点亮显然是不行的,因为我们的灯珠排列顺序是“S”形,我们需要将灯珠进行划分调整才行


如果将每块灯板上的20颗灯珠10颗一组分成左右两部分的话,6块灯板总共可以分成12部分,我们依次点亮这12部分的灯珠即可实现从左往右点亮的效果,具体实现的思路是我们先点亮最左侧的第一部分也就是21-30号灯珠,然后再点亮31-40号灯珠,如此循环直到剩余部分全部点亮,程序如图1-65所示


【开源】创客奶爸手把手教你制作拟辉光管时钟图63


图 1- 65 从左往右点亮亚克力板程序


我们将该程序封装在一个“LeftRight”的函数中,函数中先设置了点亮氛围灯的1-20号灯珠,接着点亮1号灯板的21-30号灯珠,然后再循环11次从左往右点亮1-6号灯板中剩余的灯珠


按照上述方法可以实现灯珠从左往右点亮,自然也可以从右往左熄灭,我们继续修改程序,这次程序中,函数“Black”里将“RGB生效”的程序块放在了循环的外面,效果会更加明显一些,下载下图1-66中的程序后,会看到先点亮底部的氛围灯,接着从左往右依次点亮所有灯珠,然后从右往左熄灭所有灯珠


【开源】创客奶爸手把手教你制作拟辉光管时钟图64


图 1- 66 从左往右点亮从右往左熄灭亚克力板程序


至此,我们已经实现了通过按键控制RGB灯显示一些炫酷效果的方法,当然创意远不止如此,比如还可以从中间向两侧一次点亮或熄灭,相信你还会有更多的创意,赶快动手试试吧


第四步,时钟模式


对于按键和RGB灯的控制方法有了基本认识后,接下来到了拟辉光管最核心的时钟模式,实现时钟模式的过程是先从NTP时间服务器获取到时间,再根据时间点亮对应数字的亚克力面板


首先我们来实现时间的获取,这时候我们编写程序需要用到Wi-Fi模块里的“设置Wi-Fi”和“NTP时间服务器”程序块,程序如下图1-67


【开源】创客奶爸手把手教你制作拟辉光管时钟图65


图 1- 67 获取时间程序


在程序中我们需要申请6个变量分别来存放“时、分、秒”的十位和个位数据,提取时间“时、分、秒”十位和个位上的数据我们采用的方法是:个位除以10的余数,十位缩小十倍。紧接着将提取到的时间数据放置在一个简单定时器中每个1秒获取1次


只是获取到精确的时间数据还不够,我们还需要将时间数据显示出来


显示的方法无非就是根据当前的时间点亮对应的数字亚克力灯片同时熄灭上一秒时间对应的数字亚克力灯片,程序如下图1-68


【开源】创客奶爸手把手教你制作拟辉光管时钟图66


图 1- 68 显示时间程序


因为1-6号灯板灯珠点亮的原理都是一致的,唯一的区别是灯珠的编号在随不同的灯板有规律的变化,为了简化程序我们可以设置一个“SetLED”函数,在函数中增加“num、R、G、B”四个参数,调用函数时只需要修改变量“num”的数值即可实现点亮任意灯板上的灯珠,修改变量“R、G、B”的数值即可更改颜色


而在“SetLED”函数中核心的程序是根据当前时间熄灭上一秒的灯珠并点亮当前时间所对应的灯珠。原理和前文中从前往后效果程序一致,需要注意的是,在零点也就是“时、分、秒”十位和个位上的数字都为0时(注意这里是“且”的逻辑关系),需要将小时的十位、个位上一秒时间对应的灯珠熄灭(也就是23点,1号灯板数字2和2号灯板数字3的组合)


同样的,当秒的十位、个位或者分的十位、个位上的数字为0时,需要将秒的十位、个位和分的十位、个位的上一秒时间对应的灯珠熄灭(也就是熄灭亚克力灯片数字9下方的灯珠,注意这里全部都是逻辑“或”的关系)


看到这里,难免有伙伴会产生疑问,在函数“DisplayTime”中调用“SetLED”函数时,设置颜色的变量“R、G、B”为什么还会加上一个数字乘以变量“Mark”的积呢?这是因为,我们通过调节变量“Mark”的数值来实现拟辉光管时钟在显示时间时有同色和彩色两种显示模式,,当“Mark”为0是同色,“Mark”为1时彩色。使用1号轻触按键长按来触发此功能,并且在触发之前增加了从左往右的显示效果,程序如下图1-69


【开源】创客奶爸手把手教你制作拟辉光管时钟图67


图 1- 69 颜色调节程序


第五步,音频律动模式


时钟模式程序实现后,我们再设计最后一个音频律动模式的程序就全部完成了,音频律动模式中,我们使用了一个声音传感器,与ESP32控制器的36号引脚相连(A0)


我们通过串口打印的方式测试声音传感器的数据,程序如下图1-70


【开源】创客奶爸手把手教你制作拟辉光管时钟图68


图 1- 70 声音传感器测试


从测试的结果可以看出,声音传感器是模拟信号,数值范围在0-4095之间


知道了声音传感器的数值范围,我们就可以通过计算,将声音的强度转换成点亮的灯珠数量,也就是声音越大点亮的灯珠越多,声音最弱则全部熄灭,点亮灯珠的方向为从左向右(1号灯板-6号灯板),程序如下图1-71


【开源】创客奶爸手把手教你制作拟辉光管时钟图69


图 1- 71 音频律动模式程序


在程序中,我们将声音传感器的数值由原来的0-4095范围映射到了1-20的范围并存放在了一个“Voice”的变量中,这样声音强度就可以和灯板上的灯珠相对应了,由于底部氛围灯和RGB灯板的灯珠数量是不一样的,所以我们分别使用了两个循环来控制,当声音强度大于100时,根据声音强度点亮对应的灯珠,方向是从左向右,随着声音变大氛围灯依次点亮,不过氛围灯的序号是依次减小的,而RGB灯板上的灯珠随声音变化的方式会与氛围灯有些许不同


控制RGB灯板上的灯珠从左向右依次点亮的方法和前文中讲到的 “LeftRight” 函数从左往右点亮的效果类似,并不是每次点亮单独的一颗灯珠,而是每10颗灯珠为一组,声音越强点亮的灯珠组数就越多,当声音强度小于100时熄灭所有灯珠,并且每次点亮后都会随机产生一种颜色,最后将此程序封装在一个“Beating”的函数中方便调用


第六步,主程序


以上模式全部实现后,我们来看一下主程序是如何做到将这几种模式来回切换的,程序如下图1-72


【开源】创客奶爸手把手教你制作拟辉光管时钟图70


图 1- 72 主程序


主程序中,我们使用了一个“switch”语句,当单击2号轻触按键时会使得变量“flag”累加,主程序通过判断变量“flag”的值来切换显示不同的模式


值得留意的是当“flag”数值为1时会运行一次 “UpDown” 函数,之后让变量“flag”加1,自动进入到“Beating”音频律动模式中,当再次单击2号轻触按键后会进入氛围呼吸灯模式,这时需要长按2号轻触按键跳出当前模式进入时钟模式


最后奉上所有程序(由于篇幅限制,部分介绍过的程序进行了折叠处理)


【开源】创客奶爸手把手教你制作拟辉光管时钟图71


图 1- 73 所有程序

#总结#

   到此为止,拟辉光管时钟就全部制作完成了


   通过拟辉光管的时钟制作,我们掌握了不少的RGB灯的控制方式,按键的多种编程技巧,其实拟辉光管时钟还有很多玩法,比如还可增加日期显示的功能


   相信你还会有不一样的美妙创意,一起动手造起来吧


造物让生活更美好,我们下期再见

【开源】创客奶爸手把手教你制作拟辉光管时钟图72


福利:公众号后台回复关键字“拟辉光管时钟”即可获取RGB灯板PCB文件,直接打样即可


网络白丁  中级技师

发表于 2021-10-10 15:47:45

NB的手艺人,
回复

使用道具 举报

KIKI  管理员

发表于 2021-10-11 09:21:42

回复

使用道具 举报

ndqFNC53TIA9  见习技师

发表于 2021-10-11 18:53:12

不错,非常好看,富有科技感
回复

使用道具 举报

Mr Guo  初级技神
 楼主|

发表于 2021-10-11 23:41:02

KIKI 发表于 2021-10-11 09:21
https://mc.dfrobot.com.cn/thread-297160-1-1.html
这个项目可以参考下,他几年前海参加了众筹。
https:// ...

666666
回复

使用道具 举报

帅猫  高级技师

发表于 2021-10-23 13:42:47

我觉得可以做成单个的用总线连起来,这样爱做多长做多长哈哈哈
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail