这个彩蛋能呈现出1658万种色彩,更绝的是你可以用随便一个电视,DVD,或者录像机的遥控器来遥控它。
这个项目基于一个蛋壳里的RGB全色LED,随机变色的来源是一个Atmel的ATtiny85单片机,用一块Arduino板烧写的程序。单片机通过一个接收头和外面的遥控器通信,这个晶体管对红外遥控用的波长和载波频率特别敏感。
材料和工具
1个ATtiny85或者ATtiny45单片机1个共阳极RGB LED ,3个1/4W的220欧姆电阻,1个红外接收头,3个或者4个1.4V纽扣电池。
我用的红外接收头是从一个寿命到头的录像机前面板上拆下来的。如果其他的部件是邮购的话,搭车买一个更划算。但是几乎所有的部件手边都有或者能从旧机器上拆到,这个我也不想例外。
电阻是给LED限流的,180欧到560欧的都随意,但是记得弄三个一样的。
如果你能找到的RGB LED是共阴极的话,不用说应该将共同的引脚连到地线上。我想代码应该也能工作,但是会得到和共阳极LED不同的结果。
最后我给这个电路准备了4个纽扣电池供电,加起来5.4V。过去我通常用3V的电压给ATtiny85和RGB LED供电(比如说CR2032锂电池),但是红外接收头至少要求5V供电才能工作,所以没办法了。
我用的代码和电路来自MIT high/low博客,在那里我学到了怎么用Arduino板给ATtiny烧写程序。我用的是ATtiny系列而不是板上的ATmega328,因为ATtiny系列的体积要小不少,所以才方便放进蛋里。这个芯片业比较便宜,用来做一次性的制作也不会心疼。
我把编程板和万能板组合在一起用,这样比较省事。但是你也可以全部用面包板和插线搞定。下面是来自MIT的教程,告诉你下载安装程序之后如何将ArduinoISP 的程序加进Arduino IDE.工程并下载到单片机里。
1.将Arduino板连接电脑,然后在示例菜单中打开ArduinoISP sketch;
2.在面包板上或者ISP板上将ATtiny芯片连接到Arduino板;
3.在Arduino IDE里打开一个新窗口,将彩蛋的程序粘贴进去;
4.保存程序;
5.从IDE软件的菜单里,选择Tools》Board》“Attiny85(w/Arduino as ISP)”;
6.下载烧写程序到ATtiny里。
电路
把ATtiny和其他的电路零件插到面包板上并且供给5V的电源,注意芯片的引脚编号,不要接错了。注意实体芯片上的引脚号和编程时的IO口编号不一样,看好电路图。在面包板上搭好电路之后记得仔细检查,这样才能正确下载程序,并让它以你希望的方式工作。
这个电路会对遥控器上的点击做出反应,它使用接收头探测38KHz的红外光脉冲。这是红外遥控的编码标准,并且大大增加了系统的灵敏度,使它能够透过蛋壳感应到外界的遥控器。
我们并不真的要读出这些脉冲里编码的信息,所有的脉冲对电路来说都像是发令枪砰的一声,然后就开始变色。红外接收头靠电池供电,然后将探测到的38KHz信号从OUT引脚输出。当这个引脚和连接的ATtiny引脚处于低电平时什么都不会发生,但是当OUT引脚输出高电平时,ATtiny就会随机决定LED的颜色。
焊接组装
有时候这种做法被称为折腾死甲虫,因为需要把Attiny翻过来,然后在悬空的引脚上焊接。需要非常认真,确定在焊正确的脚位:芯片翻过来以后引脚的位置和正放着时刚好相反。
不要匆忙,耐心慢慢来。这些部件都怕热,不要焊太久。最后都焊好以后,终于可以松一口气了!
蛋壳制作
找一个白色的鸡蛋,背刺它,不断摇动把里面的蛋液甩出来——找个水池做这活。然后用剪刀小心地把洞口扩大一些。
为了让整个电路有个底座,我把一小段铜管焊在一分钱上,然后把电池用胶带缠好塞进管里。
按下遥控器
把蛋壳套在电路上,然后就可以把彩蛋放在电视机旁看热闹了。稍等一会儿之后它的颜色就会变得难以预料。
-
单片机
+关注
关注
6032文章
44516浏览量
633004 -
RGB
+关注
关注
4文章
798浏览量
58388 -
红外遥控
+关注
关注
22文章
347浏览量
45543
发布评论请先 登录
相关推荐
评论