×

吃豆人LED像素面板服装开源

消耗积分:0 | 格式:zip | 大小:0.13 MB | 2022-11-01

分享资料个

描述

介绍

首先,让我们说显而易见的:我们喜欢做家庭服装。

去年我们做了太空“外星人”,它看起来更像是穿着银色和 LED 灯条装饰的人。我们真的很喜欢 LED,因为它们是独一无二的,让孩子们在晚上跑来跑去时很容易看到。我们决定做一些能再次点亮的事情,但不确定是什么。推荐吃豆人的​​是我的女儿,因为几周前她最近在保龄球馆玩了 Namco gem。这个建议就是我们所需要的。这是一个好主意,我们必须实现它。

规划

第一步总是计划,但值得注意的是,特别是如果你想做一个不同的 8 位字符。

我们为这个家庭选择了吃豆人角色。吃豆人,吃豆人女士,以及鬼 Blinky 和 ​​Pinky。我希望它与原始 8 位字符一样准确且真实,因此我首先查找了原始游戏精灵。

这些有助于确保我们获得正确的像素像素布局并显示动画的每一帧。例如,您可以在上面的精灵中看到鬼腿和吃豆人嘴巴的不同框架。

然后我在 Excel 中布置了动画的每一帧,这样我们就知道 LED 的数量和每个板的整体布局。稍后需要单独编号的 LED 来对 Arduino 板进行编程。

 
pYYBAGNglEuAJbRyAATSUEbeCJU921.png
精灵的 Excel 布局
 

从布局中可以看出,Ghosts 的高度为 14 像素,宽度为 14 像素。Pac-Man 是 13x13,而 Ms.Pac-Man 是 14x14。

一旦我们知道像素的宽度和高度,我们就必须决定我们想要制作多大的面板。我希望它们彼此之间的大小相同。这意味着每件服装上的每个像素的大小都相同。为了正确缩放它们,我们首先确保它适合最小的家庭成员,我的儿子。我测量了他的尺寸并举起一些纸板剪裁,看看他仍然可以舒适地将手臂放在上面并且仍然可以行走。我们最终得到了 22 英寸的高度和宽度,作为鬼魂的大小。

这将我们的比例设置为 22 英寸/14 像素 = 1.57 英寸/像素。

材料

 
pYYBAGNglHyAcD3WABLC8HSQTdA043.jpg
 

我们希望这些服装相对容易穿着,所以我们选择了轻质材料而不是耐用的材料。

  • 底座:1/8" 纸板,激光切割和热粘合
  • 半透明封面:草稿纸(牛皮纸或聚酯薄膜)
  • LED:12mm DC5V WS2811 可单独寻址 LED(50 串)
  • 板:Ardunio Uno R3
  • 电源:5V DC 便携式电源(如手机充电器)+ USB 到 DC 适配器
  • 杂项: DC 电源插孔适配器面包板跳线 DC5V 电源,用于测试 Velcro 编织管道带管道胶带

基地

幸运的是,我可以使用激光切割机,所以我知道我会用它来制作这些。您不需要自己的激光切割机。您可以将其发送给进行激光切割的公司进行切割,也可以通过手动路线打印 PDF 并将其放在纸板上并手动切割。

底座由从当地艺术/爱好商店购买的 1/8" 纸板制成。我们的激光切割机有一个 32"x18" 的床,所以我让他们把床单剪成那个尺寸。

面板 面板由几个主要部分组成:底座、板条、盖子和带子。底座固定 LED,石板提供像素和面板的整体稳定性,盖子散射光线,表带使其便于携带。

 
 
 
 
pYYBAGNglIGAA1VJAAEHTEeND2s705.png
 
1 / 3
 

 

造型

为了制作激光切割机的文件,我使用Rhino 对底座进行了建模。我非常准确地对面板的所有部分进行了建模,以使激光切割机尽可能多地完成工作。

我制作了每个面板,以便每个垂直和水平鳍片可以相互滑入,并且它们也会进入底座。以这种方式进行设置可以让面板的各个部分一起滑动并形成凹口,而无需太多胶水,同时还确保我们可以获得完美的像素正方形。

注意: 槽口和接头两侧有 1/64" 的间隙,可以让纸板很好地滑动在一起。槽最终为 5/32" 宽(1/8" + 1/64" + 1/64") .
 
 
 
 
poYBAGNglJiAX0OOAAoVLihXN9U524.jpg
 
1 / 3激光切割机在行动
 

 

激光切割

如前所述,我们的激光切割机为 32"x18",因此我制作的用于激光切割的 CAD 文件设置为该尺寸。我添加了 Ghost 服装的 .dwg 文件。您可以用它自己激光切割,也可以将其打印出来并用作模板来手工切割纸板。

如果你打算用手做,你可以很容易地把它铺好并剪下纸板条。您可以自己测量,像素大约为 1.5 英寸正方形和 2 英寸深,中间有一个 12 毫米的孔用于 LED。您还可以使用提供的 PDF 作为模板进行剪切。

注意: 我们使用了 12 毫米 LED,这就是孔的大小。LED 很好地插入,但由于是硬纸板,所以它们有点松动,特别是如果我必须将 LED 取出并放回原处。如果我要重做,我会让这些孔稍微小一些。

集会

由于我们的激光切割床的小尺寸为 18",因此必须将底座切割成两部分,这比底座的 22" x 22" 尺寸要小。我在连接处使用了良好的 ole 管道胶带以将其保持在一起。这真的是为了在添加 LED 和板条时保持它在适当的位置。一旦将板条添加到底座上,它们就提供了真正的支撑和稳定性。

每个板条通过水平 (H) 和垂直 (V) 的“H#”或“V#”以及按顺序排列的数字 (#) 来标记。板条很好地滑动在一起,因为我们增加了额外的 1/32" 间隙。我的第一次测试留下了更少的空间,它们滑动在一起并且无法将它们全部放在一起。一旦全部滑动在一起,我们将板条放在底座上. 他们在底座上加号形孔的位置刻了槽。一旦它在底座上,我用管道将板条用胶带粘在两端的底座上。然后我在板条相遇的左上角添加了一小滴热胶将它们固定在适当的位置并确保它们不会滑倒。

板条的槽口延伸穿过底座,因此底座背面有一个小标签。我还在这些标签上添加了一层热胶,以将板条牢固地固定在底座上。

经过思考

正如您在 3d 模型图中看到的那样,我没有计划在面板背面安装外壳。这是一个错误!我在打勾或治疗前几个小时注意到了这一点,我匆忙剪下 2.5 英寸的纸板条并将它们添加到面板的背面。让 LED 线以外的东西靠在身体上。

这有帮助,但实际上它应该是完全封闭的。当面板打开后四处走动时,LED 往往会被推入。您可以在一些图片中看到像素不再是真正的像素,而是点光源。这是 LED 被推入或掉入的地方。我让家人停下来几次,以便在夜间修复这些问题或进行滴答或治疗。

注意: 如果您要制作这些,请计划一个后面板来封闭 LED。不要犯同样的错误。

LED 布局

 
poYBAGNglJuAVgBuAAKQieSB8dc245.png
 

LED 灯串的规划是在 Excel 中进行的,我为 Ghosts 按 0-169 的顺序排列了 170 个单独的 LED。

Excel 布局

需要注意的重要事项是像素和起点之间的距离。

如果您不想切割和重新布线预串灯,则需要确保您可以按顺序从一个孔伸到另一个孔。在我的情况下,预串束上各个 LED 之间的距离约为 3 英寸(75 毫米)。这意味着在布局时像素必须彼此相邻。

对于起点,只需确保它靠近可以安装 Arduino 和电源的位置。

 
poYBAGNglNKAYgnRABGItH65D6Q434.jpg
 

放置 LED

按照 Excel 中列出的模式,我们将 LED 从背面推入纸板中。

注意:布局是镜像的,因为它是从前面看的 excel 布局,我们是从后面推入的。0 LED 在 Excel 中位于左侧,在背面的底座图片中位于右侧。

LED 有一个小法兰,可将它们固定在适当的位置。我发现纸板有点脆弱,所以走动时 LED 确实会移动一点。如果你想让它们更牢固地固定,你可以在它们上面涂上一点热胶。

接线

 
 
 
 
poYBAGNglOiABqpZAACAxTpyrQs773.jpg
 
1 / 2
 

电源

为其供电的最佳方式是使用 5V DC 可充电电池(又名:便携式电话充电器)。然后使用 USB 到 DC 适配器插入您的灯,现在应该与母 DC 适配器连接。

我犯了一个错误,使用了一个 8xAA 电池组,上面有一个开/关开关,这是我从前一年的服装中得到的。只有在写这篇文章时,我才意识到它有一个 12V 输出,而我使用的是 5V LED。(我不是火箭外科医生,但我认为这很糟糕)。因为我身边有电池组,所以我把它捡起来插上电源,一切正常,我没有再猜到它¯\_(ツ)_/¯

有趣的是,我使用的电池组只给了我们大约 2 小时的开机时间。在确定它们是不正确的面板电源后,我使用正确的 5VDC 便携式电话充电器测试了面板,它们的使用时间要长得多。

我测试了一个 2200 mAh 和一个 7800 mAh 的便携式充电器,面板分别运行了 3h 40m 和 12h 43m。这意味着使用便宜的“口红充电器”,您可以准时使用近 4 小时。

注意:我从测试中得到的准时是幽灵服装(170 个 LED)以 255 中的 40 亮度运行(亮度在代码部分中设置)

发光二极管

我将 12 毫米 WS2811 可单独寻址 LED 串用于户外标牌。我在亚马逊上买的,一串 50 个。

接线

如图和照片所示,将电源连接到灯,然后连接到威廉希尔官方网站 板。

第一串上的引线 LED 连接了电源,有两根电线(热/红色和接地/白色)。这些连接到一个母电源插孔适配器。电源已插入此适配器。然后我们连接电源、接地和来自第一个 LED 的数据连接到 Arduino 上的 5v 和 GND 连接,数据(中间)线连接到板上的 3 PIN。

确保在接线之前检查你的 LED 串。我的 LED 线是红色 (5V)、绿色 (DATA)、白色 (GND),但您的可能会有所不同。

注意:使用 USB 为 Arduino 供电时,请拔下 5V 连接,但不要将 GND 与 5v 和 GND 混淆 - 这可能会炸毁您的威廉希尔官方网站 板。我从经验中知道,它闻起来不香。

代码

 
pYYBAGNglQ-AX-P5AA_TbFXfnmI589.jpg
 

一旦你全部连接好,当你插入它们时,灯就不会做任何事情。也许它们会短暂闪烁。他们需要被告知首先要做什么,这就是我的做法。

我没有介绍如何对 Arduino 板进行编程。如果你不知道怎么做,Arduino 网站上有一篇很棒的文章:Arduino入门

快速LED

我为这些使用了FastLED 库它易于使用且易于查找示例,以帮助解决所有问题。他们使用Web 颜色很有用,因此您可以使用名称将任何 LED 设置为任何颜色。

我的代码

下面是 Ghost 的代码,我也上传了 Arduino 代码文件。

逻辑的基本轮廓是用主要颜色填充所有 LED,然后更改颜色,并关闭各个 LED 组以制作每个“帧”。一旦我们为动画的每个“帧”设置了一组,我们以 X 速度 X 次循环它们以组成整个动画。可能有更聪明的方法可以做到这一点,但我就是这样做的,它对我有用。

 
注意: 您可以上下调节亮度,这将影响电池的使用时间。改变 //fill body color 来改变 Ghost 的颜色(下面是红色)你可以通过改变循环的数量和速度来改变动画的速度

添加封面

 
 
 
 
pYYBAGNglTWAQ6kkAA6PwGM8LcE373.jpg
 
1 / 2无盖
 

我建议把封面留到最后,因为它是纸做的,可以撕开。当您将它们放置到位或进行调整时,能够从前面接触到 LED 也很有用。

I used a roll of drafting paper I had lying around. I am pretty sure it is vellum, but it might be mylar. Either way what you want to a translucent paper that is wide enough to cover the whole thing so you don't have to deal with a seam. You can get rolls of drafting paper at an art store or online.

To keep the paper in place I put a line of regular old Elmers glue along the top edge of the vertical fins. I didn't do the ones horizontal ones as all you really need is for the paper to stay mostly in place. Keeping the paper glued down makes sure the grid read through and make the panel look like individual pixels.

After you get the glue down lay the paper on top and put books or something heavy-ish on top to keep it in place and let the glue set.

胶水凝固后,您可以将多余的纸张剪掉。在边缘留下一点额外的纸折叠起来并用胶带粘住,这有助于确保边缘不会剥落或松动。

道路准备就绪

 
 
 
 
pYYBAGNglVmAMRwJAA1W1SXa6R4734.jpg
 
1 / 2
 

对于最后的步骤,我们准备好上路了。

  • 用 Velcro 将 Arduino 和电源安装到背面
  • 将连接处用胶带粘在一起,以免它们松动
  • 添加一条带子以随身携带。我为此使用了编织管道带(就像我身边的绘图纸一样)。
  • 在手机上加载一些吃豆人的音乐和音效,并带上蓝牙扬声器

利润

 
 
 
 
pYYBAGNglYiAHxX8ABAiF2uXNEY624.jpg
 
1 / 2
 

完成后,您可以将您的 8 位家庭派到附近,以打动邻居并收集您的甜蜜糖果利润。

 


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"//m.obk20.com/www/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'吃豆人LED像素面板服装开源',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"https://www.elecfans.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);