数码窗贴纸(Arduino控制)

43074年

138

31

简介:数码窗贴纸(Arduino控制)

关于:我从六年级开始就一直在写软件,从高中开始就和数字电子产品打交道。这些天来,我的职业生涯包括软件开发和架构,主要关注于……

一种保险杠贴纸大小的led矩阵,可以从SD卡中按顺序显示图像,生成动画标识或“窗口贴纸”。Arduino控制!还包括Windows, Mac和Linux代码转换。xbm图像文件到数字窗口贴纸文件。完美的商店或家庭窗口,或一个有趣的桌面标志!


步骤1:零件清单

数码窗贴纸零件清单


1x
Arduino兼容裸骨板套件(BBBKit)
找LM7805调节器!
$15.00
1x
可选的,见下文……
12.00美元
2 x
请参阅下面的重要提示
11.64美元
(23.28)
1x
见以下PCB说明
2.99美元
1x
6.99美元
1x
$0.09
1x
$0.75
1x
1.75美元
1x
$0.32
1x
$0.19
1x
$0.11
1x
见下面的标题容器说明。
$0.75
1x
$0.49
1x
见下面SD-MMC卡片说明。
$17.95
8倍
$3.98
1x
低容量SD卡(例如512 MB)
1x
9伏电源
各种颜色的焊料和22号线

BBB套件是由moderndevice.com生产的Arduino克隆。一个完整的Arduino组件需要15美元,这是最便宜的选择之一。我本可以通过使用一个备用的Arduino板和每个Arduino组件的单独供应清单来节省几美元的成本,但这个项目的Arduino部分由一个供应商提供的便利是值得的,我可能节省了3到5美元。你应该可以用任何Arduino来做这个项目。它可以在如下图所示的面包板上创建原型,使用Boarduino、Bare Bones Board或其他可适配面包板的Arduino克隆。你也可以购买BBB完全组装为额外的10美元。moderndevice.com的所有者非常有帮助,如果你遇到问题,他会和你一起工作。下载BBB组装说明仔细地跟着他们走。确保要求LM7805电压调节器的板,或单独购买一个,并使用它在地方较小的调节器,他的船舶默认。

USB BUB板插入BBB (Arduino)。它有FTDI USB到串行转换器需要编程您的BBB Arduino。如果你已经有一个ICSP编程器,或者Arduino有一个ZIF插座来编程Atmega 328p,那么就没有必要购买USB BUB,尽管它在通过Arduino IDE的串行端口监视器调试微控制器代码时很有用。

重要提示关于2416点阵式显示器。当您查看我的施工照片时,您会注意到我的2416点阵显示板不匹配。一个有白色(未通电时)的L.E.D.s,另一个有透明的。透明组比扩散组稍微暗一些。当我就这个问题联系Sure Electronics时,他们同意发送一个替换板。它及时完成了本文,最终的照片和介绍视频显示了匹配集。不幸的是,他们发给我的新电路板使用了调光器、透明的L.E.D.s。请务必让sure Electronics知道您需要一套匹配的电路板!为了安全起见,您可能需要订购3块电路板。此外,绿板最近也出现了。我没有使用它们的经验,但如果我购买时它们可用,我会使用绿色。最后,请记住,Sure Electronics的总部位于中国。计划等待一段时间,等待您的产品到达,并安排有人在包装上签名。那里的人很容易相处。

多氯联苯:如果您希望按照我提供的分步说明进行操作,您将需要Radio Shack印刷电路板,并且您需要修剪其端部以正确安装在机柜中。这也意味着您需要在2x8带罩箱头上安装一个直角连接器(显示器的带状电缆插入该连接器中)。需要直角连接器,以便引脚可以弯曲以桥接Radio Shack PCB上的试验板间隙。如果我从头开始,我会尝试使用以下原型PCB之一,这也允许您连接直2 × 8遮蔽箱头:
  • 3孔PCB原型每个焊盘,焊盘间距为1“
  • 103RAW无线原型PCB每个焊盘上都有铜线,然后可以切割,避免了对(尽可能多的)电线的需要
  • 创建一个自定义印刷电路板
如果有足够的兴趣,我会设计一个电路板,并让他们制造。附件:项目附件几乎是完美的配合。你会在下面的步骤和照片中看到,我的优势不在于切割塑料外壳。希望您能做得更好,并就更好的方法提供反馈。我的工作很好,但不好看。正如你将看到的那样,围栏对我来说是一种事后思考。我计划了一个完全不同的圈地,但结果要好得多。(更多信息请参见以下步骤。)

Jameco*:上面列出的带有星号(*)的每一件物品都可以从Jameco购买,但要求至少订购10件,所以如果计算成本,请记住这一点。(有多余的零件总是好的!)

头插座:BBB有18个插脚用于供电,Arduino插脚可插到面包板上。使用20针头插座将BBB插入印刷电路板,如下说明所示,有以下变化:
  • 我没有一个20针的头部插座,但我有2个8针插座。这很好用。要使它们正确对齐是一场艰苦的斗争,但它是有效的。请务必按照提供的图片进行操作。您会注意到,有2个BBB引脚未连接。
  • 如果您使用20针表头插座,2针将保持未连接状态。请标记电路板,以便在插入BBB时知道它的位置。
  • 您还可以放弃BBB上的面包板插脚和次级PCB上的插座,直接将电线连接到需要的位置。这可以为附件提供一些灵活性。
2 × 8 Shrouded头盒用于从显示矩阵插入带状电缆。正如上面在PCB下提到的,如果你在Radio Shack PCB上有这样的间隙,就需要直角版本。你可以使用相同的板和切割铜痕迹,使一个直标题盒工作正常。我从当地供应商(M.C. howard Electronics in Austin, TX)购买了我的头盒,但他们只有几个,我在随后的旅行中没有看到更多。上面提供的链接是我发现的第一个有匹配部分的链接,但我没有在这家公司工作的经验。

SD-MMC卡:哇,这是一个定价过高的组件。它太棒了!事实上,不要用任何Arduino SD卡护盾。他们似乎都使用了一个电阻网络来降低信号电压到SD卡所需的3.3伏。这并不适用于所有的SD卡。事实上,我的卡只能用这种方式工作几分钟,当我把它放回PC时,我不得不格式化它,然后它再也不能在Arduino上工作了,直到我使用74HC4050进行信号电平转换。我还有其他的卡,没有这个也没用。如果你决定使用不同的电路板,并可以计划在外壳更好的配件,我会尝试焊锡一个更便宜的SD卡插座直接连接到线路板,而不是使用昂贵的转接板。顺便说一句,NKC电子也有同样的功能突破董事会但当我最后一次检查时,它是不可用的。我不记得拆板是否包括头钉。你需要11个。一套备用可以从Jameco订购:http://www.jameco.com/webapp/wcs/stores/servlet/ProductDisplay?langId=-1&storeId=10001&catalogId=10001&productId=53532,售价0.75元。

SD卡附录:我在下面的评论中详细评论了相对昂贵的SD卡转接板的替代品。简言之,下面的照片显示了我在试验板上用备用零件做的实验,使用SD卡插座的替代品。有关更多信息,请阅读评论和相关说明。

至于SD卡本身,越小越好!所提供的Arduino代码只适用于FAT16文件系统,并且只从根目录读取文件。这意味着您的卡上有512个图像文件的限制,而这些文件只有100字节。一个非常小的卡可以很好地工作,而大于2GB的卡可能根本就不能工作。有ATMega328的FAT32库,但在我拥有的时间里,让它与Arduino一起工作是比价值更多的工作。(以后)。

最后,在PCB布线时使用各种电线。这将使跟踪连接变得更容易。如你所见,我使用了红、黑、绿、黄和白。我希望我有更多的颜色。

关于9伏的电源:一个9伏的电池可以工作,但当它开始减少时,你会遇到奇怪的问题。一旦电池电压(在仪表上测试时)下降到7伏以下,显示器可能会亮起来,但会有不足的电流给Arduino供电,行为有点不可预测。一个9伏壁疣工作很棒,BBB上的LM7805应该能够处理一个12伏的输入,像从自动适配器。(如果你把它放在移动的车辆上,请小心使用!如果你分散了其他司机的注意力,后果自负!你甚至可以考虑连接一个加速计,并在单元运动时禁用显示。电路是你的,责任也是你的。我推荐它用于家庭窗口或桌面,或商店窗口,而不是移动的车辆!我喜欢把它作为一个保险杠贴纸的想法,但不是冒着任何人的生命或健康的风险!但总的来说,这应该比大多数路边数字标识少得多,许多印刷的保险杠贴纸的文字难以阅读。)

工具
我使用以下工具来完成此项目:
  • 高质量、可变瓦数烙铁
  • 剪线钳
  • 剥线钳
  • 万用表(用于测试)
  • 一个大的无焊料面包板,用于测试-你可能不需要这个
  • 带切割轮和钻头(用于在外壳中开孔)的Dremel
  • 变速钻头和各种钻头
软件
  • Arduino IDE 0017
  • 我的微控制器代码(见步骤3)
  • GIMP图像编辑器,或其他能够生成.xbm文件的编辑器
  • My xbmtodws代码,用于从.xbm文件创建SD卡的图像文件

步骤2:组装BBB Arduino和USB BUB。。。

按照现代设备提供的说明组装BBB Arduino。
产品说明:http://moderndevice.com/Docs/BBB_RevE_Instructions03.pdf

组装BBB时,记得使用LM7805稳压器,而不是L4931CZ50LDO。更小的电压调节器可能工作很好,但我们正在拉相当大的电流,以供电到768 leds .可选电感是不需要的这个项目。你可以按照指示创建焊接桥,如果你喜欢保存电感,或如果你不愿意处理表面贴装组件。然而,它并不难焊接,我使用它在我的板。

如果您还购买了USB-BUB,请按照组装说明完成。
产品说明:http://moderndevice.com/Docs/BUB_instructions.02.pdf

组装USB-BUB时,我选择了配置2,但实际上我只使用配置1(无跳线)。

第三步:为你的Arduino编程。。。

BBB跳投:
将BBB上的USB|EXT跳线设置到USB端,这样我们就可以使用USB- bub编程,而无需提供外部电源。(或者,在直流输入插孔上提供9伏的电源,并保持EXT侧的跳线。)当此步骤完成时,您希望将跳线移回EXT一侧!

另一个带+5v|EXT|+V的跳线应该始终在+5v侧。

FAT16库安装:
接下来,下载下面的FAT16库和DigitalWindowSticker.pde文件。FAT16库需要解压缩/解压到Arduino IDE所在的hardware/libraries目录中。在我的Windows系统上,我将Arduino IDE的当前版本保存在c:\temp\Arduino-0017\中。FAT16库安装到位后,在[c:\temp\arduino-0017\\hardware\libraries\FAT16\中应该有一组文件。FAT16库也可在以下位置获得:http://code.google.com/p/fat16lib/.它是由比尔·格里曼写的。下面的文件(Fat16.tar.gz或Fat16.zip)中有一个已知可以与数字窗口贴纸一起工作的库副本。

Arduino IDE:
启动ArduinoIDE。

打开DigitalWindowSticker。pde文件使用IDE。有两种方法可以做到:

1)在文本编辑器中下载并打开文件,将内容复制到剪贴板,粘贴到Arduino IDE中的新草图中,然后将草图保存为DigitalWindowSticker。

2)下载digitalwindowstick .zip或digitalwindowstick .tar.gz文件,并将文件解压到包含草图的目录。然后在Arduino IDE中打开DigitalWindowSticker草图。

接下来,编译草图。如果有任何错误,确保您使用的是Arduino IDE的0017版本,并选择了Atmega328板(Arduino Duemilanove或Nano w/Atmega328)。还要确保正确地将FAT16库解压缩到硬件/libraries目录中,其他Arduino库驻留在该目录中。

Arduino程序:
插入USB-BUB,等待驱动程序安装,或引导系统加载驱动程序。在Arduino IDE中,工具|串行端口下应显示一个新的COM端口。选择USB-BUB的新端口。

如图2所示,将USB-BUB插入BBB,并从Arduino IDE上传编译后的代码。

外部电源准备:
现在Arduino已编程,将BBB跳线移回外部侧(而不是USB侧),以便由外部9伏电源供电。

步骤4:组装SD-MMC卡接线板

简单的焊接一套头针连接到SD-MMC卡转接板。

选择:
  • 在下一步中,使用导线将SD-MMC卡转接板直接连接到印刷电路板。这样做将使您能够灵活地确定SD卡插槽在机柜中的位置。
  • 焊接裸SD卡插座到您选择的印刷电路板作为下一步的一部分。
笔记:
仅使用以下针脚:
  • CS(用于SPI访问SD卡)
  • DI (SD卡SPI访问的数据输入)
  • VCC是卡的3.3v电源
  • GND是通用地
  • DO是数据输出,可直接连接到Arduino的引脚12
  • 可湿性粉剂用于检测丢失的卡片。这个将连接到Arduino的引脚2
  • COM需要连接到GND

步骤5:建立电路

在构建电路时,请使用下面的原理图作为参考。附加了一个Eagle原理图文件以及一个图像文件schematic .png。使用下面的照片提示。记住,如果您觉得更方便,可以使用74HC4050上的任何门。只是参考数据表

关于电路:
74HC4050用于将Arduino发送的5伏信号转换为SD卡所需的3.3伏信号。74HC4050上有6个缓冲器,这个电路只使用3个。所有的输入都来自Arduino,输出到SD卡。第四个SPI连接直接从SD卡上的DO运行到Arduino数字引脚12。(Arduino可以很好地读取低电压信号。)

一些使用SD卡的Arduino项目使用电阻网络将5伏信号降至3.3伏。对我来说,这并不奏效。我发现一张SD卡可以工作,还有几张不行。当我连接上74HC4050时,我所有的SD卡都工作了。

SD卡具有SPI模式。我们通过74HC4050将其连接到Arduino SPI引脚10、11、12和13。

这个LM3940IT是一个“1A低Dropout稳压器5v到3.3v转换”。它从BBB Arduino板接收5伏输入,并产生稳定的3.3伏,为74HC4050和SD卡供电。在开始之前,我建议在LM3940上标记输入引脚,以便在构建电路时将其与输出引脚区分开来。接地针在中间。

电路板上的另一个“组件”是遮蔽盒头,用于连接LED显示矩阵到Arduino。BBB Arduino的5伏电源需要连接到显示屏和LM3940的输入端。正如你将看到下面,我们使用电路板上的电源轨在一边携带地,和3.3伏在另一边。我们将直接将BBB的5伏特引脚连接到LM3940和LED显示器的遮蔽盒头。

效用:
首先在电路板上布置元件。如果你打算使用我使用的附件,按照我使用的方式,试着遵循下图的布局。只要所有正确的连接都建立起来了,它就不必是精确的,没有任何不应该连接的连接。在规划BBB上的DC插孔和USB-BUB的头引脚,以及SD卡插座的物理位置时要小心。当你把它放在箱子里时,这一点很重要。如果你在PCB上使用我使用的相同的孔,你可以得到相同的匹配,但要注意,它需要相当数量的研磨和切割,以使它与塑料外壳工作。再一次,它很有效,但清楚地表明我是Dremel的新手。

将部件放在印刷电路板上后,使用一个细点Sharpie标记BBB连接的引脚编号/标签和被遮盖的盒头的引脚编号。如果你不知道pin 1在盒头的位置,将一根带状电缆连接到盒头,并将一根实心线连接到带状电缆的另一端,在红色电线的地方,使用你的仪表来测试连续性。您可能还想将带状电缆插入LED显示器,并检查您认为是盒头上的引脚1和您认为是引脚2、引脚15和引脚16之间的连续性。然后将其标记在PCB上。在LED显示屏的顶部是封装盒头的引脚焊接到它,每边一个。这使它非常容易匹配您的盒头引脚上的那些显示。

一个重要的注意事项:我使用的带护罩的箱盖有直角接头。印刷电路板没有允许连接到每个引脚的方法,因为在电路板的每一侧,焊盘的连接就像在试验板上一样。为了解决这个问题,我弯曲了直角盒头的插脚,这样一排插脚就可以安装在电路板上试验板间隙的每一侧。下图显示了弯曲的销。头球以一定角度放在板上,但效果很好。小心不要使用太大的力将其插入PCB——不要使用插入力来获得更好的配合,否则您将面临将PCB一分为二的风险(经验之声)。

焊接组件:
一旦您在电路板上布置好东西并标记了pin码,就可以焊接每个主要组件了。我建议按以下顺序进行:
  • 74HC4050的16针DIP插座
  • LM3940IT
  • 3.3伏调节器所需的电容器(见下一节)
  • SD卡接线板
  • 带护罩的箱形收割台
  • 用于连接BBB的收割台销插座
3.3稳压电容器:
我选择保持电容器为3.3伏稳压器尽可能接近LM3940。我使用两个33 μ F电容之间的接地引脚和输出引脚。一种是钽电容,另一种是电解电容。为了节省成本,钽电容不需要高额定电压。6伏是刚刚低于两倍应该从调节器出来,应该足够了。记住电解电容和钽电容都是极化的!长引脚需要插到连接LM3940输出的pad上,短引脚需要插到连接LM3940接地(中间引脚)的pad上。引线是足够小的,你可以在一个单独的孔为每个引脚。

47µF钽电容器位于LM3940的接地引脚(中间引脚)与其输入引脚之间。这个电容器也是极化的。确保短引脚插入接地的焊盘,长引脚插入接+5v输入引脚的焊盘。

电路的电压调整器部分现在可以连接到电力轨道上了。

将导线:
现在是令人厌烦的部分:运行所有电线。电线颜色越多,这将越容易。尽量保持电线直接、短,并与电路板平放,以避免杂乱,增强视觉可追溯性。

电源轨:
先把所有的电源连接起来。3.3伏电源线我选用LM3940后面的轨,板另一边的轨作为地。运行一根电线从输出引脚的LM3940后面的轨道。将另一根电线从接地管脚(中间管脚)运行到板对面的导轨上。

接下来,将LM3940的+5v输入连接到一个连接到接线盒引脚12、14或16的焊盘上,并从另一个连接到接线盒引脚线的焊盘上,将一根导线连接到来自BBB Arduino的+5v线。下图中接线盒引脚16用于+5v。这将完成电路的电压调节器部分尤特。

现在,将一根黑色导线从箱头的针脚11、13或15连接到接地导轨。同时将接地针脚从BBB连接到接地导轨。箱头的针脚15用于下图中的接地。这将完成LED显示屏的电源连接和BBB电路的电源连接。

将盒盖的针脚15连接到SD-MMC卡转接板上的COM针脚,然后将转接板的COM针脚连接到16针DIP插座上的针脚8。同时将SD-MMC卡转接板的GND引脚连接至转接板的COM引脚。所有接地连接现在应完成。

要完成电源轨的安装,请将74HC4050 16引脚拨码的引脚1连接到3.3伏电源轨上。还将SD-MMC接线板的Vcc引脚连接到3.3伏电源轨。

将LED显示屏连接至Arduino:
将以下框头引脚连接到Arduino (BBB)引脚:
  • 箱头(CS2)引脚2到Arduino BBB插座上的数字引脚5
  • 箱梁(CS1)针脚1至Arduino BBB插座上的数字针脚4
  • 箱头(WR)引脚5到Arduino BBB插座上的数字引脚6
  • 箱头引脚7(数据)至Arduino BBB插座上的数字引脚7
下面的照片显示了每个连接。

将SD-MMC卡连接到74HC4050和Arduino上:
首先是简单的…将SD-MMC转接板的DO引脚连接到Arduino上的数字引脚12。

接下来,将74HC4050(3A)的16针DIP的针脚7连接到Arduino BBB插座上的数字针脚13。然后将74HC4050(3Y)的引脚6连接到SD-MMC卡上的CLK引脚。

现在将74HC4050 (4A)的16引脚拨码的9引脚连接到Arduino BBB插座上的数字引脚11。然后将74HC4050 (4Y)的引脚10插入SD-MMC卡的DI引脚。

最后,将74HC4050(5A)的16针DIP的针脚11连接到Arduino BBB插座上的数字针脚10。然后将74HC4050(5Y)的针脚12连接到SD-MMC卡上的CS针脚。

不要忘记将74HC4050插入DIP插座,如下图所示。

这就完成了从SD卡读取文件所需的连接。

连接卡检测:
为了能够判断SD插槽中是否有卡,请将SD-MMC转接板上的CD插脚连接到Arduino数字插脚2。

连接BBB到头部插座:
要完成电路,请将BBB连接到收割台插座。确保对齐引脚,使其与电路板上的标签匹配!正确准备好外壳后,我们将连接LED显示屏的带状电缆,完成电路!

步骤6:安装外壳

就像之前提到的,我对Dremel并不在行。我强烈建议您提出修改外壳以容纳电路的更好方法的建议。尽管如此,我还是这样做了:

攻击董事会:
开始在Radio Shack印制电路板的每一端(远离任何铜痕迹),并使用一把钳子来打破不需要的一面。当你完成,板应该适合纵向对6英寸的一面的外壳。

准备LED矩阵显示:
每个显示板都有一个拨码开关,控制板是否响应CS1, CS2, CS3或CS4。确保显示屏左侧的面板(当它面向外时)打开了CS1,其他所有开关都关闭了。确保右边板CS2已打开,所有其他开关关闭。

打开机箱盖:
外壳的盖子用来将LED显示器固定在一起。要做到这一点,你需要在盖子上切一个整体,长度和宽度正好是两个显示器的长度和宽度之和。我切了一个纸板箱,正好是两个LED显示屏的大小,不包括它们安装在电路板上,也不包括电路板上的其他组件——只是LED立方体的大小。然后我把这个放在盖子里面,用胶带粘好。我用盒子刀沿着纸板的边缘反复刻划盖子,直到完成切割。我用盒子刀进行了一点后续剃须,提供了一个很好的适合LED显示屏的公司,其余的板在塑料后面。

接下来,我把LED显示屏放在适当的位置,用一个带小头(3/64)的钻头在显示屏上的每个螺孔上钻孔。(每块板4个,共8个)

我放置了一个4-40 3/4英寸的机器螺丝在每个孔从盖子的顶部。在里面,我用一个4-40螺帽固定每个螺丝。在顶部的螺丝上,我放置了第二个螺母,以提供一个缓冲相当于板上的晶体管的高度。

在这个位置上,每个显示器都回到盖子,与螺丝穿过螺丝孔,和另一个螺母,以固定板在适当的地方。

破解外壳-内部:
现在,使用一些巧妙的方法(我使用胶带标记大致区域)在外壳侧面制作插槽,可以访问以下项目:
  • SD卡插座
  • BBB上的直流电源插孔
  • USB-BUB引脚,用于将串行监视器连接到BBB(用于调试、重新编程,仅仅是因为如果要访问SD卡,它们需要突出,因为我没有事先设计该部件)
为此,我使用了带有切割轮的Dremel。产生的槽比需要的大得多,而且不是超级直。我稍微润色了一下。我还使用了一个砂轮,以去除一些塑料盒内,使BBB板上的DC插孔与外壳的外部边缘齐平。我发现我的直流输入插座不会走得足够远,否则。注意:Dremel上的切割轮切割,但它也熔化塑料。

然后,我将电路板放在机柜底部,将DC插孔和SD卡插座对准我认为它们足够接近的位置,然后使用热胶枪将电路板粘到机柜底部。我还在DC插孔周围添加了一些热胶,以在插入机柜时保持头部插座的压力插孔。在将PCB放入外壳之前,我在PCB底部放置了少量热胶,并快速将其固定到位。然后,我再次用热胶将PCB的整个边缘对齐,以便在插入DC插孔或SD卡时将其固定到位。

连接电缆和盖子:
我们现在终于可以把展示板附带的带状电缆连接起来了。用短电缆将两块展示板连接起来。较长的电缆可以进入其他头盒上的任何一块板。(公共汽车是共享的!)较长的电缆的另一端应该插到印刷电路板的头盒上。确保你正确定位电缆,使缺口对齐。

将盖子固定在外壳上,拧紧4个角螺钉。数字窗口贴纸现在完成了。如果您取出SD卡,并通过BBB的DC插孔用9伏直流电源给设备供电,您应该会在显示器上看到一条信息,告诉您插入SD卡。

如果看不到信息,则应拔出万用表,并根据示意图验证是否存在短路,以及每个连接是否正确接线。

恭喜你的新数码窗贴纸。在下一步中,您将看到如何在SD卡上放置图像。

步骤7:创建和显示图像

该电路从SD卡读取文件,并显示在LED显示屏上。为了做到这一点,必须理解以下几点:
  • 您的SD卡必须使用FAT16文件系统进行格式化。这是大多数旧卡的默认设置,以及小于2gb的卡。
  • FAT16将根目录中的文件数限制为512。微控制器仅编程为从根目录读取文件。
  • 文件按顺序从0.dws读取到511.dws。
  • 当微控制器到达一个无法读取的文件时(比如读取9.dws后为10.dws),它将在0.dws时重新启动。
  • .dws文件是按行排序的位图文件。前八位填充显示屏左侧的第一行LED。一整行需要16位,共48行。(每个显示板24个。)
  • 要创建.dws文件,请从XBM(x-bitmap)文件开始,并使用我的命令行程序xbmtodws转换该文件。
我找到的最好的跨平台工具,用于在GIMP. .xbm文件是从左到右运行的位图文件。每个字节代表8个黑或白像素。下面的图片展示了如何在GIMP中创建数字窗口贴纸模板,以及如何将文件保存为.xbm文件。

转换:
创建要显示的.xbm文件之后,通过xbmtodws运行它们。附带有xbmtodws的完整源代码。它在Windows上用Visual Studio 2005编译,在Mac OS X上用g++编译,在Linux上用g++编译。其中有一个build-linux.sh示例,说明如何在linux上进行编译,还有一个build-macos.sh示例,说明如何在Mac上进行编译。

xbmtodws需要Boost 1.40.0头文件。它使用Boost Spirit解析.xbm文件,并使用Boost dynamic_位集简化从左到右、从上到下的位更改。

附加文件(xbmtodws-1.0.zip和xbmtodws-1.0.tar.gz)中包含xbmtodws的预编译版本。Linux版本在xbmtodws\xbmtodws\Linux中。Mac版本在xbmtodws\xbmtodws\macosx中。Windows(32位)版本在xbmtodws\release中。

Xbmtodws从每个16 × 48像素的.xbm文件创建一个100字节的.dws文件。96字节是像素数据,4字节包含以毫秒为单位显示图像的时间。

转换名为fred.xbm的文件:

Windows:xbmtodws.exe fred.xbm
Linux/Mac:xbmtodws fred.xbm

默认情况下,图像将显示1秒(1000毫秒)。要更改显示时间,可以使用命令行参数-delay nnnMilliseconds。例如,要显示图像10秒使用:
xbmtodws.exe fred.xbm-延迟10000

Xbmtodws将创建一个名为fred.dws的新文件。要显示此文件,请将其复制到SD卡的根目录,并为其指定一个后缀为.dws的数字名称(例如0.dws)。记住,如果你在数字中留了一个间隙,假设你有0个文件。dws 1。dws 3。Dws,只显示文件0和1。读取2时将检测到错误。DWS和微控制器将在0 DWS再次启动。

另一个选项是反转图像。创建.dws文件时,使用-inverse标志反转图像。

动画:
通过创建帧间小幅度移动和短延迟的图像序列,可以创建类似于介绍屏幕上视频中显示的动画。

您现在有了创建自己的数码窗贴纸的完整说明。请发布反馈,说明您如何使用数码窗贴纸!
Arduino比赛

比赛二等奖
Arduino比赛

第一个分享

    建议

    • 玩具及游戏比赛

      玩具及游戏比赛
    • 大挑战vs小挑战

      大挑战vs小挑战
    • 修复它的挑战

      修复它的挑战

    31评论

    0
    金梭

    4年前

    您能使用DE-DP016帮助编写代码来获得这个效果吗?

    0
    金梭

    7年前介绍

    实际上大项目;

    请告诉我:你试过在这些应用程序中使用2416吗?

    1- LED条音频频率分析仪

    双LED示波器

    3-三维浮动立方体

    有什么提示吗?

    0
    迪拜

    9年前介绍

    干得好,我真的很喜欢这个主意。
    太棒了。

    0
    efdat

    9年前步骤7

    我可以自己制作led显示屏吗?请把图纸寄过来好吗

    0
    ElectrokV

    9年前介绍

    我真的很喜欢你在这里的指导。不幸的是,我没有以前那么多的时间。哦,几十年前,我有一个问题可能不属于这里,但它似乎是相关的。而且,我的任务甚至涉及到一种可指示的制造,它采用了美泰公司的“雷达枪”,并增强了它的功能,使之能够用于你街道上的真实汽车交通,而不是它的预期“玩具”方面。我在这附近的某个地方有这样一个装置,当我在思考这个电路时,我遇到了一个问题,就是试图制作一个输出显示器,它的可读性就像城镇和各个司法管辖区将太阳能雷达枪放在“故障点”的显示器一样(我住在一条非常重要的直达街道上,数百辆汽车用来避开几个街区外更拥挤的公路交叉口,几年前,城市律师对这一大胆的举动表示愤怒,并向邪恶的贩子们挑战,在我的街道上张贴时速25英里的标语,当时我要求他们放下一把橡胶垫减速交通堵塞了,唉。他们可能在我的街道上挂了一个时速2英里的标志,而不是在标志上浪费美元。我敢打赌,保险杠的成本会更低,但这就是城市生活。

    嗯,我想过各种各样的事情,比如在我的街道上喷涂各种颜色的“喷涂”停车场标记漆,至少可以迷惑那些驱使我认为有什么正式的事情在发生,也许他们最好慢下来。

    我的主要问题是,我不想做一个半吊子像样的教学桌,然后有人在街上踢了我一脚,然后把我所有的零件都撕掉!!有鉴于此,我考虑过尝试想出一种能与太阳能电池和独立电池协同工作的东西,而不是我的汽车电池,在我的车里有标识/闪光灯等。当然,我相信我偶尔也会有这样的想法:如果有人胆敢告诉他/她该做什么,那他/她只会被我的车头/尾灯、车窗、开罐器等砸碎。

    我是一名实用系统电气工程师,我们的小区是地下供电的(该死的!),但如果我只想借用城市208伏的几分钱(或者他们使用的任何东西——可能是277伏),并用它提供我想要的任何电能,让它离地面足够远,以防止只有油漆球炮手和真正的狂热者接近它。

    但是,有了它,还有警车的视觉屏障,当它们出现的时候,超速者瞬间就变成了模范市民。

    我不知道你们是否见过这样一位艺术家,当观众站在一个特定的位置时,他用粉笔画出了最令人惊叹的3d图像。他能把平坦的人行道弄得像他在爬进一个又深又黑的洞穴之类的。但是,即使我买得起他,在我的街道两端涂上永久的颜料,人们也会很快发现,但拍摄他们的脸将是无价的。

    为了保持我的愿望,我把东西放在某种封闭的地方,或者放在我够不到的地方,我可以使用像红外生物摄像头这样的装置,它能感知运动,并拍下一些东西的照片。但是,如果我把它放在地上,它就会消失。

    因此,任何人都有一些廉价的想法,让一个市民独自一人尝试降低街道上的交通速度。这不是因为我的邻居不同意我的观点,而是因为他们有更多的事情要做,所以我是一个委员会。我有一个过激的邻里协会,但我想我宁愿去找城市顾问,也不愿与他们打交道当然,你们中没有一个人曾经是一个小团体的一员,在任何事情上都没有意见分歧,是吗?*咧嘴笑*

    只要不触犯法律,所有的想法都是受欢迎的。这确实让我想起了几年前奥斯汀的两个十几岁的孩子,他们几乎关闭了马萨诸塞州的波士顿市,他们的磁性小玩意儿看起来像卡通网络里的小动物,并把它们种植在全国各地。如果我早知道他们会把这些东西挂起来,我会尝试加入他们,以便得到其中一个!!天啊,我喜欢这样。

    几年后,很明显是同一个程序员得到了我们的TXDOT温度标志,并重新编程了它,而不是像“预期道路延误”这样的东西,“警告,僵尸前面”。

    我THINHK卡通频道,特德·特纳的“帝国以及时代华纳波士顿写检查所谓的033.3万美元成本波士顿反应他们的些小领导设计成桥金属块,所以他们很难下来,然而广告“成人游泳”

    我不想走得太远,我读过一些生理学研究,比如说道路上简单的垂直白色条纹会让人减速,因为他们试图弄清楚为什么会有这些线,所以,在可能受到DPS、当地警察等威胁的情况下,他们会降到限速以下,试图弄清楚到底发生了什么。

    但是,这对我来说太无聊了。我不想得到1千瓦脉冲激光和朝他们的脸上(好吧,也许有时后他们几乎运行在我的类),或使他们转向到好几辆车停在街上,我只是想让他们的注意力足够长的时间让他们慢下来。

    如果这是错误的地方,我将非常感谢任何人把我的任务放在适当的论坛

    真诚地,

    德克萨斯州奥斯汀的ElctroKV

    0
    domdomgin

    9年前介绍

    我可以使用adruino duemilanove板吗

    ***警告:如果要尝试此项目,请阅读此内容***
    首先是伟大的项目als_Liaona。不幸的是,看起来SURE ELECTRONICS改变了显示板并改变了写入进度。您的代码似乎假设写入的第一个字节位于显示左上角的第一列中,并向右运行。这似乎是逻辑进度。现在第一个字节是从第8列开始,一直到第1列,然后跳到第16列,从左到第9列,再到第24列,等等。我附上了两张照片。一张使用你的代码,另一张我将字节翻转到新的进度。

    我不敢相信SURE将显示更改为这个写入进程。我看了红色和绿色LED显示屏的PDF手册,他们现在似乎都有这个进展。我正在考虑是否应该在Arduino中包含重新排列位的代码,还是在写入SD卡之前从外部重新排列位。如果我修改了Arduino里的代码,我会给你寄一份。

    0
    sunishpootheri

    10年前的回复介绍

    嗨,这个主意不错,只是知道怎样才能买到。我想买,把详细信息寄到sunishpootheri@gmail.com

    0
    肮脏的情人节

    10年前的回复介绍

    我认为这本指导书的作者很好地解释了在哪里购买必要的物品以及记录了购买过程。如果你想自己制作,你应该阅读指导书。

    0
    肮脏的情人节

    11年前的回复介绍

    注意:修复位交换!!!

    这里是代码,你可以使用来固定位交换在SURE 16x24 LED显示板(我的板是REV 1.1的绿色LED板)。要修复位交换问题,只需将数字窗口贴纸代码的DisplayBuffer()函数替换为以下代码:

    **********************************************************************************
    void DisplayBuffer(const unsigned char *pucData192, bool bReverse=false)
    // put_data192必须为192字节!
    {
    无符号字符sucData192[192];//为交换的数据注册
    For (int j = 0;j < 8;j + +)
    {
    对于(int i=0;i<8;i++)
    {
    *(sucData192+((j*16)+(2*i))=*(pucData192+((j*16)+14-(2*i));
    * (sucData192 + ((j * 16) + (2 *) + 1)) = * (pucData192 + ((j * 16) + 15 -(2 *我)));
    }
    }
    //数据交换,显示交换的数据
    DisplayBufferOnSide(如Data192、m_iCS1Pin、bReverse);
    DisplayBufferOnSide (sucData192 + 48岁m_iCS2Pin bReverse);
    }
    ***********************************************************************************

    0
    als_liahona

    11年前的回复介绍

    dirty_valentine:非常感谢你为那些使用Sure Electronics更新的显示器的人发布这篇文章。虽然这不是很多代码,但它是大量的移动(或更可能的mov)。如果有人想要避免这种情况,或者担心显示速度(实际上可能不是问题),您可以更改图像转换工具(xbmtodws)来实现这一点,而不是更改Arduino代码。我们甚至可以添加一个命令行标志来支持旧的显示。事实上,如果Sure Electronics想要向我发送一组新的显示,我将进行更改并发布xbmtodws的代码更改。我不打算买一套新的,因为我觉得他们把这个搞砸了!

    再次感谢你贴出你的修复dirty_valentine。

    0
    肮脏的情人节

    11年前的回复介绍

    没有问题。我还有其他Arduino软件要对图片进行操作。从概念上讲,使用您的数据版本比交换的数据版本更容易。例如,滚动数据是直接的,而滚动交换的数据则不是。这是一个真正的大脑戏弄,只是为了弄清楚如何进行交换。诚然,这是一些交换和一个额外的寄存器,但我认为我有空间和时间让Arduino工作。

    0
    als_liahona

    11年前的回复介绍

    我越是看你的图表/图像,我就越觉得一定是搞糟了。这根本不是直觉。我会就此向他们提出质疑,但上次沟通是个问题。再次感谢你指出这一点。

    0
    肮脏的情人节

    11年前的回复介绍

    我可以肯定这一点,但我不确定这是否会有任何好处。我认为,当他们对电路板进行旋转时,显示器上的列位确实发生了错误并进行了交换,尽管有可能SURE购买了一个不同的8x8 LED显示器,并交换了列脚。作为一个IC设计人员,我不能想象这样的错误而不进行修复。至少12美元一块电路板边缘必须很薄,因此如果在发现这个错误之前确实做了一堆PCB,他们可能会修复碳粉的问题,并更改数据表,而不是扔掉电路板。问题是他们会在下一次修订时重新更改它,还是这种糟糕的书写模式是永久性的。

    0
    als_liahona

    11年前的回复介绍

    哇,真是太糟糕了。谢谢你向读者指出这一点!你最后修改了xbmtodws代码还是Arduino代码?如果你不介意,请把差价贴出来。当我觉得我能负担得起另一次购物之旅时,我会考虑买一套新的。绿色的看起来不错。我很抱歉听到他们改变了界面。如果一个搞软件的人这样做了,我们就没完没了!

    0
    肮脏的情人节

    11年前的回复介绍

    我只是费力地交换了实际的矩阵位来显示NoCard。我还没有实际编辑Class函数或更改xbmtodws代码来为我进行交换。昨晚我想我要编辑Arduino的类代码。这将使程序稍微大一点,但显示数据将更直观。我将发布新的DWS Arduino代码,当我得到时间来修复它。这可能需要一段时间,因为我是Arduino的新手,我没有做过很多c编程,我一直在使用组装中的pic。我最终决定咬紧牙关,学习用C语言编写微程序,因为汇编是非常费力的。
    0
    KANahas

    11年前介绍

    我有几个问题要问你,als_liahona。我还没抽出时间把草图拆开,希望我没遗漏什么明显的东西。两个以上的2416矩阵可以串联使用吗?比如2*4数组?还有,我注意到你有一条“插入SD卡”的信息。图像存储在Arduino上吗?代码是否支持可以直接链接到输出的标准文本?还有一点——是否可以使用图像精灵?好吧,我撒了个谎,还有一个问题:如果不支持文本,有没有更好的方法提供倒计时?


    提前感谢!!!

    0
    als_liahona

    11年前的回复介绍

    是的,我相信你们可以连上4台24x16的显示器。您必须更改Arduino代码来支持这一点,但这应该不难。您可以在我创建的类中看到,它分别处理每个显示。

    我选择只向DWS绘制图像,但在互联网上有大量代码显示如何将字符写入2416显示器。最简单的事情是为每个字符创建内联位图,然后编写一个简单的函数来输出它们。我喜欢使用图像,因为我可以使用不同的字体和效果。让文本一次滚动一张图片需要做很多工作,但它有更多的灵活性。我已经做过好几次了。

    倒计时应该相当简单,特别是当你所需要的只是数字的时候。可以使用图像,也可以编写代码来生成数字。改变代码来做倒计时是非常容易的。

    “插入SD卡”图像作为代码的一部分存储在arduino中。它是在需要时使用的静态全局变量。代码足够小,你可以得到几个这样的图像编译,仍然适合在ATMega 328轻松。

    我希望这有帮助。

    另一个建议…如果有人想在这方面省钱,SD卡转接板太贵了。以下是我将在未来产品中尝试的一些替代方案:

    1) 按照以下说明构建您自己的套接字://www.smiletrl.com/id/Cheap-DIY-SD-card-breadboard-socket/克洛登真是个好主意。

    2)使用软盘驱动器电缆如图所示-你可以使用另一个DIP插座,如上面所示的电缆的另一端://www.smiletrl.com/id/SDMMC-fits-in-floppy-edge-connector/

    3)使用1或2的变化,你实际焊接引脚直接到一个Micro或Mini SD卡适配器,并将适配器安装到您的附件中。它的售价大约是2美元一个,比你不需要经常插拔卡的插座便宜得多。

    再次重申,我希望这能有所帮助……如果外面的Arduino SD卡屏蔽可以负担得起,并且不使用电阻网络(产生不足的结果)将5v信号转换为3.3v,那就太好了。也许我会把一个板在一起,包括74HC4050和一个3.3v调节器…有潜在买家吗?