国庆节做了一个小礼物送人,很多人也做过的,旋转LED,先上个视频看看吧,希望大家喜欢。
东西不大,就是一个“喜之郎”果冻大小。由于之前没做过这玩意,搞了三四天才满意,呵呵,让大家见笑了。下面简单的说说我的DIY之路以及分享下做这个东西遇到的一些问题吧。如果你没有做过又想做的话,希望能够给您带来一点点的帮助。
简单介绍下: STC12C5608AD @16MHz | 内置锂电池 |
Mini USB接口充电 | 多种花样显示 | 内置感应开关
用STC12C5608AD这款单片机不是因为这个单片机有多好,而是我手头上体积小一点而又好焊的单片机只有这个了,查查Datasheet,它只有8KB的ROM和512Byte的RAM,有点小小的寒酸哈,如果有条件,建议使用资源更为丰富的单片机,这样会带来更好的效果,实现更为复杂的花样。准备一个大号的“喜之郎”果冻,吃了,壳留着做外壳;还准备一个水杯盖子,磨砂的玻璃杯,超市到处都有买。关于外壳这一点,我是参考一位叫“只生”的网友用果冻壳和水杯盖,觉得还挺精致的。在此特别感谢他!
由于时间关系,具体做法就不多说,贴几张主要步骤吧:
准备好外壳:
焊好电机、线圈、起振电路等:
焊好单片机,次级线圈,电机和旋转板连接就用铜柱+热缩管(太松的话塞几根细铜丝):
两块板插起来:
果冻壳上面是弧形,用热风枪加热洞洞板可以弯成弧形:
焊好LED和引线,这个可能有一点点难度哦:
用热熔胶粘上去焊好:
准备一块锂电池,锂电池充电有一个充电曲线,比较复杂,所以做一块锂电池充电板,为了简单用专门的锂电池充电IC,淘宝很多,或者拆万能充电器也可:
装进水杯盖固定好:
搞一小块覆铜板,焊一根细漆包线,用做触摸开关感应片,触摸用专门的IC稳定可靠,我用的是SJT5101,还蛮好用的,感应片大小和匹配电容会影响触摸灵敏度,具体参考芯片手册。触摸开关控制的是一个MOS管,推荐4953(SOP-8),内阻很小,里面是双MOS,可以并联使用。
把它粘在水杯盖后面,用泡沫双面胶把其他地方填满,这张照片拿出来真有点搓了 :
全部装好:
盖上果冻盖:
底部再垫一张海绵粘在泡沫双面胶上,防滑,减震,隐藏触摸感应片:
内部细节图1:
内部细节图2:
过程大概就这样,可以自由发挥。下面来说说原理及需要注意的地方吧,做这个东西一点点小经验,菜鸟级别的,大虾勿喷,直接过:
=====================================================================================
上面的内容纯属晒照片,下面的内容我觉得是做好这个东西的关键吧。
原理: 控制好一排LED进行旋转,频繁的改变这一排LED的亮灭,利用人眼暂留实现文字和图案的显示。
旋转LED和LED点阵屏有类似之处,但也有很大的区别。点阵屏也是一行一行的扫动显示,也是利用人眼暂留来显示,这是它们的类似之处,面积较大的点阵屏一般采用多行扫替代单行扫,目的是为了获得更高的亮度。对于一排LED的旋转LED则不能做到,只能够通过更高的LED亮度以及更高的刷新率来提高整个显示区域的亮度。这个并不是他们的主要区别,主要区别在于一个同步问题,而想要很好的解决这个问题也要付出相应的代价。
首先引入一个问题:
这个问题都知道解决,换个顺序不就可以了,或者干脆中断等等。。。
第二种方法:
这一种方法肯定可以做到不晃动,但是会带了一段“显示死区”问题。我在做这个玩意的时候也遇到了,同时也看了网上很多人录的视频,发现只要有花样显示的(静态显示除外),都会存在一段死区,用AT89C52的死区很长,用STC12的死区短,你懂的,处理速度慢嘛。
旋转LED显示字符的 字宽 跟电机转速有关,也跟每次送数据到LED后的延时时间有关:电机转速快,字越宽,送数据后每次延时时间越长,字越宽,反之则越窄。
显示死区是由于计算花样导致的,看来 计算花样所需的时间 只能够分配到 每次送数据之后的延时 之处了。但是这又会带来问题,画个图:
这个图不管有没有漏洞,我觉得应该是这么回事,红色箭头那条路应该比较好走。开个双缓冲,自己写个精简版的任务调度,应该可以搞出个花样丰富,没有死区的“完美”旋转LED出来。其实我也想开双缓冲,写个简单的任务调度玩玩。这种方法我没有去实现,我觉得应该是可行的。我用的是STC12C5608AD,只有512字节的RAM,显示10个16x16的汉字,用了320字节的RAM,如果开双缓冲肯定是不够的,所以不好做,换单片机更不可能了,东西焊的那么死。我觉得玩花样有缓冲区是最好做,复杂的花样可以理解为很多图层的叠加,这样再复杂的花样也
好实现。
这是做这个小玩意的一点心得,希望对大家有用,我不能造玉,但是能够抛砖,希望大家有更好的思路来完美实现旋转LED!最后附上源码,纯手工现场发挥,没有图纸,有空画一张补上,谢谢大家。
|