所在的位置: js >> js前景 >> 用LED灯,让ldquo吃豆人rd

用LED灯,让ldquo吃豆人rd

李从悠 http://www.bdfyy999.com/zhuanjiatuandui/102983.html

让吃豆人动起来

做一个吃豆人像素板吧!

起飞

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教程,尽在交大创客!

快来


转载请注明:http://www.aierlanlan.com/cyrz/655.html