让吃豆人动起来
做一个吃豆人像素板吧!
起飞
Hello!一周一次的交大创客DIY教程又和大家见面啦!
相信同学们(特别是骨灰级街机玩家)都听说过一款叫Pac-Man(吃豆人)的游戏。也许你没有亲身体验过游戏本身(年发售的平台游戏,比我还要老!),但是大家一定都见过他的形象——
年一部叫《像素大战》的电影也运用了这个经典的形象。
那么。今天小客就来教大家,怎样自己制作“动起来”的LED吃豆人!
STEP1
找到每种Pac-Man的8位字符。
首先要明确,制作像素板,就需要知道图案的像素参数,以便获得正确的像素布局,并且获得动画的每一帧。
然后,在Excel中布置了每个动画帧,以便知道LED的数量和每个板的总体布局。稍后需要LED的个别编号来编程Ardunio板。
数据如下:怪兽1和怪兽2:px
吃豆人1:px
吃豆人2:px
面板大小可以通过Excel中的布局看到,怪兽的高度是14像素,宽度是14像素。吃豆人1是13x13,吃豆人2是14x14。
一旦我们知道像素的宽度和高度,我们就必须决定要制作面板有多大。我希望它们都是相同的大小,所以每个服装的每个像素都是相同的大小。
我们购买的LED灯串之间的距离约为3英寸(75毫米),为了适当调整它们,我们确保它是合适的尺寸,我们最终以22“的身高,和宽度来制作。
我们的像素的比例设置为1.57“(22”/14像素,怪兽)。
STEP2.
寻找、制作材料
底壳:60cm*60cm的硬纸板,剪去四角折起四边,呈无盖方盒状。
透光罩:起草纸(羊皮纸或聚酯薄膜)
光源:
12毫米DC5VWS的LED灯50串
电路板:
ArduinoUNOR3
电源:
5VDC移动电源(像便携式手机充电器)+USB转直流适配器
其他:
直流电源插孔适配器试验板跳线(就是插板上的连接线)魔术贴编织管道带DC5V电源
STEP.3
制作面板(激光切割)
我们可以用创客空间里的激光切割机切割面板,切割出供LED灯组安装的空间。
模拟面板可以用犀牛(Rhino)或者Solidworks,注意尽量完善细节。
STEP.4
布置LED灯
LED字符串的规划在Excel中,按照从0-的顺序为Ghosts排列了个单独的LED.
按照Excel中的模式,我们将LED从后面推入卡纸板的位置。
注意:
布局是从前面看的excel布局镜像的,我们从后面推入。Excel中左侧的LED指示灯位于左侧,右侧的LED指示灯位于右侧。
直板如果过于脆弱,可以用热胶加固一下。
STEP.6
接线
使用5V直流可充电电池(又名便携式手机充电器),然后使用USB转DC适配器插入灯,现在应该连接到DC母适配器。
电源线连接到电路板,然后按照图和照片所示完成。
串中的第一个LED具有电源输入连接。有两根电线(热/红色和地面/白色)。这些连接到一个母电源插孔适配器。电源插入此适配器。
来自第一个LED3pinJST连接器/输入端口的5V,GND和DATA连接到Arduino板上的5V,GND和3PIN连接。确保在接线之前检查一串LED。图中LED线是红色(5V),绿色(DATA),白色(GND),但是你的可能是不同的。
注意:当使用USB为Arduino供电时,拔下5V连接,但不要将GND和GND混在一起,这样可能会炸掉电路板,这样的话,味道是极其酸爽的。
STEP.7
填写代码
代码如下:
#include“FastLED.h”
#defineNUM_LEDS
#defineDATA_PIN3CRGBleds[NUM_LEDS];
voidsetup(){延迟();FastLED.addLeds(leds,NUM_LEDS);FastLED.setBrightness(40);//数字0-FastLED.clear();}//向左看inteyes_pixels_1[]={17,20,21,24,37,38,39,40,41,47,48,49,94,,,,,};intpupils_pixels_1[]={15,16,22,23,92,93,,};//看起来不错inteyes_pixels_r[]={38,39,40,46,47,48,49,50,63,66,67,75,,,,,,,,,,,};intpupils_pixels_r[]={64,65,76,77,,,,};//移除像素周围的像素intvoid_pixels_1[]={8,29,30,31,83,84,85,86,,,,};intvoid_pixels_2[]={7,31,55,56,57,,,,,};intsad_ghost[]={11,26,35,48,49,53,60,64,65,80,89,,,,,,,,,};inteyes_seconds=2;intreg_ghost_seconds=10;intfeet_delay=;//延迟毫秒b/w英尺v1v2inteye_loop=(eyes_seconds*)/feet_delay;//切换前多少次左右看intreg_ghost_loop=reg_ghost_seconds/eyes_seconds;intsad_ghost_loop=50;intsad_ghost_blink_loop=10;voidloop(){for(inti=0;ireg_ghost_loop;i++){for(inti=0;ieye_loop;i++){//填充主体fill_solid(LED,NUM_LEDS,CRGB::Red);//设定眼睛for(inti=0;i24;i++){leds[eyes_pixels_l[i]]=CRGB::White;}//设置瞳孔for(inti=0;i8;i++){leds[pupils_pixels_l[i]]=CRGB::DarkBlue;}//围绕脚移除(v1)for(inti=0;i12;i++){leds[void_pixels_1[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);//填充主体fill_solid(LED,NUM_LEDS,CRGB::Red);//设定眼睛for(inti=0;i24;i++){leds[eyes_pixels_l[i]]=CRGB::White;}//设置学生for(inti=0;i8;i++){leds[pupils_pixels_l[i]]=CRGB::DarkBlue;}//移除脚(v2)for(inti=0;i10;i++){leds[void_pixels_2[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);}for(inti=0;ieye_loop;i++){//填充主体fill_solid(LED,NUM_LEDS,CRGB::Red);//设定眼睛for(inti=0;i24;i++){leds[eyes_pixels_r[i]]=CRGB::White;}//设置学生for(inti=0;i8;i++){leds[pupils_pixels_r[i]]=CRGB::DarkBlue;}//围绕脚移除(v1)for(inti=0;i12;i++){leds[void_pixels_1[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);//填充主体fill_solid(LED,NUM_LEDS,CRGB::Red);//设定眼睛for(inti=0;i24;i++){leds[eyes_pixels_r[i]]=CRGB::White;}//设置学生for(inti=0;i8;i++){leds[pupils_pixels_r[i]]=CRGB::DarkBlue;}//移除脚(v2)for(inti=0;i10;i++){leds[void_pixels_2[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);}}//定期的伤心鬼for(inti=0;isad_ghost_loop;i++){//填充全部红色fill_solid(leds,NUM_LEDS,CRGB::Blue);//设定眼睛for(inti=0;i20;i++){leds[sad_ghost[i]]=CRGB::Yellow;}//围绕脚移除(v1)for(inti=0;i12;i++){leds[void_pixels_1[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);//填充主体fill_solid(leds,NUM_LEDS,CRGB::Blue);//设定眼睛for(inti=0;i20;i++){leds[sad_ghost[i]]=CRGB::Yellow;}//移除脚(v2)for(inti=0;i10;i++){leds[void_pixels_2[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);}//悲伤的幽灵闪烁for(inti=0;isad_ghost_blink_loop;i++){//填充主体fill_solid(leds,NUM_LEDS,CRGB::Yellow);//设定眼睛for(inti=0;i20;i++){leds[sad_ghost[i]]=CRGB::Red;}//围绕脚移除(v1)for(inti=0;i12;i++){leds[void_pixels_1[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);//填充主体fill_solid(leds,NUM_LEDS,CRGB::Blue);//设定眼睛for(inti=0;i20;i++){leds[sad_ghost[i]]=CRGB::Yellow;}//移除脚(v2)for(inti=0;i10;i++){leds[void_pixels_2[i]]=CRGB::Black;}FastLED.show();延迟(feet_delay);
终于被你滚到底了
STEP.7
添加封面纸
用一卷起草纸,或者是牛皮纸、聚脂薄膜来覆盖整个面板,注意可以适当加宽加长,后期不用可以剪掉。下了胶之后,把纸放在上面,把书或其他东西放在上面,让胶水固化。
一旦胶水凝固,就可以切掉多余的纸张。在边缘留下少许多余的纸张,将其折叠起来并贴胶带,这有助于确保边缘不会剥落或松脱。
STEP.8
做好外包装,然后开闪!!
用魔术贴装Arduino和电源
将这些连接粘在一起,以免松动
添加一条带子来随身携带。用编织管带(就像我用过的牵伸纸)。
在手机上加载一些Pac-Man音乐和音效,并带上蓝牙扬声器.
降落
到这里,这次LED面板的制作就大功告成啦
来一起看看成品效果:
好啦,本期DIY教学就到这里了。本次DIY涉及的专业性比较强,例如Arduino代码的书写,Solidworks和Rhino构建模型,以及激光切割机。建议大家可以先去熟悉熟悉几款软件的操作再进行制作哟~~~
更多好玩DIY教程,尽在交大创客!
快来