控制/MCU
摘要:这个制作基于一块Arduino上的ATmega328芯片,稍微修改了一下PCB把输出由负极性变为正极性,还添加了一块ULN2003用作缓冲输出。时钟的主体部分同其他的钟相比没有太大变化。我用了一些小技巧来提高光线的均匀度,同时避免眩光。基于Doug的设计,还能够自动调节白天/夜晚的发光亮度。在最后还附有源代码。
如何让苍白单调的时间变成彩色的?这个虹彩瀑布时钟项目就是答案!
一段时间的全力投入之后,我终于完成了这个彩虹瀑布时钟:-)
这个时钟受到了 这个DIY项目 的启发:
在看到Doug的制作的时候,我想到了RGB LED,于是就计划做点不一样的创意出来。这就是思考后的成果(在被我女朋友一脚踢飞之前),我也很乐意和大家一起分享制作的过程。
这个制作基于一块Arduino上的ATmega328芯片,稍微修改了一下PCB把输出由负极性变为正极性,还添加了一块ULN2003用作缓冲输出。
1 设计
我在本地的一家小公司丝网印刷时钟的面板,一块是标准的300mm x 300mm尺寸,另一块的尺寸是自定义的185mm x 205mm。
小一点的面板可以用来安装到书架上的橱柜里,现在它已经在上面快活地呆了几个月,每天以通知我已经迟到这种残酷事情为乐。
这块面板同时也用来做修改后PCB的初次测试,这个设计一直表现的很完美。
2 制作钟体
时钟的主体部分同其他的钟相比没有太大变化。
我用了一些小技巧来提高光线的均匀度,同时避免眩光。
和普通的设计相比,一些特殊的技巧如下:
我找了了一些塑料条并将它们裁成两种尺寸,大一点的用在外框,小一点的用在内部的百叶窗网格上。
网格做好了以后,在上面贴了一层高反射率的铝箔胶带,在黑色的塑料基底上面是银色的反光层。
将LED灯条安放在单元的顶部和底部,这样它们发出的光线就不会落到错误的字上。
这些LED灯条来自易趣,5M牌子。但是注意,有些不好用的灯条是用三个不同的LED拼装起来的,和三个芯片处于共同封装里的灯条相比效果就是渣渣。
3 电气连接
在彩虹版本上,我需要把LED的输出极性变化一下。开始我想用一个HEF4049来反相缓冲输出,接着我换成了ULN2003和UDN2981,它们不仅能够完成同样的功能,还能节省PCB板上的空间,最后用一个ULN2003来驱动3路PWM输出,制造随机的颜色变化。
同最初的线路布局相比引脚的位置有些变化,但和Doug的设计本质上没有什么区别。
每一段LED灯条需要连出4根引线,共阳极引线,蓝色阴极,红色阴极和绿色阴极。
我把所有的红色LED引脚接到一个连接器上,这样方便连接带状电缆。绿色和蓝色的LED引脚也照此办理。所有的线直接焊到连接器上,然后包上一层热熔胶。
把带状电缆从连接器连接到12V电源上,保证所有的LED都能工作,标记好哪一条电线对应哪一个单元。
4 彩虹时间
所有的电线接好以后可以坐下并观察颜色的变化。
你可以通过下面的代码调整RGB LED的颜色。
redNew = random(255);
blueNew = random(255);
greenNew = random(255);
and
redNow = random(255);
blueNow = random(255);
greenNow = random(255);
如果你把redNew和redNow的值都降低,那么理论上红色光的变化会减弱,而蓝绿色光的变化会更加明显。
最好还是自己做一次,然后亲眼看结果。
享受它吧!照片没有实际看起来那么好,有点可惜。
5 源代码
这里是彩虹钟的 源代码 ,基于Doug的设计,还能够自动调节白天/夜晚的发光亮度。
想要变更灯光变幻的速度,只需要在代码的最后改变延迟函数的值。
fade(redNow,redNew)
fade(blueNow,blueNew)
fade(greenNow,greenNew)
analogWrite(blue, blueNow);
analogWrite(red, redNow);
analogWrite(green, greenNow);
delay(150);
可以把150改成任何一个你想要的值。
这个代码唯一的缺点是当通过按钮调整时间的时候稍有延迟,但这不是致命的问题,因为每年只需要调节两次!
全部0条评论
快来发表一下你的评论吧 !