完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
描述
矩阵电脑侧面板 介绍 该项目使用带有 NodeMCU ESP8266 的 PCB 板,编码用于控制 216 个 NeoPixels,它使用来自 Matrix 特许经营权的著名“下雨代码”动画来动画计算机塔的侧面。 NeoPixel 控制板是一种模块化、可定制的 PCB 分线板,用于通过用户输入选项控制多条 NeoPixels,以通过电位计控制显示器的速度和亮度,并通过按钮控制动画模式。 该项目的 GitHub 存储库,包括 PCB Gerber 文件和代码,可在此处获得:https://github.com/WillDonaldson/NeoPixel_Control_Board 材料
工具
PCB制造 组装 PCB 时,您会在上面的图片中注意到,我在 PCB 上标记了不同电阻器、二极管、芯片和其他组件所在位置的所有标签。 电路组装 如上一节所述,本节第一张图为电子原理图。这可以在组装电路时作为参考,尽管我已尽力将所有组件直接标记在 PCB 上,以便您在组装电路时可以直接按照板上的标记进行操作。 激光切割灯箱 要构建灯箱,我们需要几块激光切割的亚克力。这些组件已根据我的 PC 机箱的尺寸进行建模,因此您可能需要调整尺寸以适合您的尺寸。
对 NeoPixels 的评论 在我们开始组装侧面板之前,我想分享一些使用 NeoPixels 的技巧。 NeoPixels 的缩写总结是它们是一条 RGB LED,每个 LED 都有自己唯一的地址。拥有唯一地址意味着所有 LED 都可以连接在同一条数据线上,因为每个 LED 只会监听直接发送给它的消息。 在切割 NeoPixel 灯条时,我建议不要在铜垫中间切割,而是在铜垫上方切割并牺牲链中的下一个 LED,因为较大的垫将使焊接更容易(见上图)。 此外,请确保观察数据传输的方向(如每个 LED 旁边的箭头所示)。反转数据传输方向将阻止以下 LED 亮起(如上图第二张所示)。 制作灯箱 激光切割后,组装构成间隔网格的 13 块,如上图所示。组件压合在一起,然后可以用丙烯酸胶或强力胶固定到位。请注意,“spacer-grid-1.svg”的一端有一个孔,而另一端没有。这些孔用于将电线穿过,在组装网格时应以交替方式安装。间隔网格有两个目的:首先,确保光在白色层中很好地扩散(如果 LED 太靠近,则会出现可见的白点),其次,确保光不会从一列溢出到相邻的列(从而破坏下雨代码效果)。 网格组装好后,可以粘在从 3 毫米黑色丙烯酸切割而成的“solid-panel.svg”的中心。该组件构成灯箱的后面板。NeoPixel 条应切割成 18 个 LED 的 12 个部分,以连接它们,剥离粘合剂层并将条插入激光切割网格之间。请注意,LED灯带按上图所示的S形图案组装,蓝色和红色箭头指示数据传输方向。 安装侧面板 此步骤特定于我的特定计算机,因此请根据需要修改步骤。我取下侧面板并拧下现有的透明面板,然后插入 3 层亚克力:首先是切割字符的面板,然后是白色漫射层,然后是带有 LED 和亚克力垫片的灯箱层。我使用 M3 螺栓将亚克力面板固定到 PC 框架上现有的安装点。 我还在侧板上钻了 3 个孔来添加两个电位器和瞬时按钮。 为了给电路供电,我使用了一个插入 850W 电源的 6 针 MOLEX 连接器。对于下雨代码动画,一次只打开几个 LED,因此电流消耗最小。但是,如果您将所有 LED 一次打开到不同的 RGB 值,则总电流消耗约为 4.32 安培(= 216 个 LED * 20mA 平均电流/LED)。如果您有较小的电源和/或想要点亮所有 LED,我建议使用直接连接到墙壁的单独电源为 LED 供电,因为对小型计算机电源施加太大压力可能会对性能产生负面影响您的计算机。 在 Arduino IDE 中对 ESP8266 进行编程 假设您安装了 Arduino IDE 软件,我们可以对 NodeMCU ESP8266 微控制器进行编程。 不幸的是,Arduino IDE 无法与 ESP8266 一起运行,我们需要先执行几个配置步骤:
演示代码 GitHub repo 上提供了使用自定义 PCB 的示例代码:https://github.com/WillDonaldson/NeoPixel_Control_Board/tree/main/examples/neopixel-demo 要分解代码,有 3 个示例。 1) debounce_switch_demo.ino 此代码显示了带有中断服务程序 (ISR) 和信号去抖滤波器的瞬时按钮的操作。瞬时开关连接到外部上拉电阻,因此它通常会读取 HIGH 信号。每次状态下降到LOW时都会调用buttonISR()函数,表示用户已经按下了按钮。但是,如果信号有噪声,则单个按钮按下可能会被测量为多次,从用户体验的角度来看,这是不可取的,因此包含 0.2 秒的 debounce_delay 阈值以忽略这些错误的、有噪声的读数。 2) two_potentiometers_esp8266_demo.ino 与基于 Arduino 的板不同,NodeMCU ESP8266 只有一个模拟输入引脚。为了能够使用 2 个电位器,我们需要一种方法来打开电位器“ON”,同时忽略另一个电位器,反之亦然。这个示例程序演示了如何使用一对充当单向门的二极管来实现这一点,并在我们想要忽略或倾听它们时分别将电位计上的引脚拉低或拉高。 3)neopixel_demo.ino 该程序将之前的两个程序合二为一,提供了多种用户输入选项,并且还基于 Adafruit NeoPixel 库创建了几种不同的 LED 动画。用户可以使用瞬时按钮切换不同的动画,并使用两个电位器调整速度/亮度。 矩阵动画代码 我们现在已经准备好将所有内容整合到最后一个软件中:matrix-raining-code.ino 此代码使用我编写的movingPixel() 函数创建下雨代码动画。不幸的是,由于 LED 的 S 形接线(如步骤 5 中详述),创建下雨动画有点棘手,因为每个偶数列的数据传输方向“向上”,而每个奇数列“向下”。为了解决这个问题,movingPixel() 函数使用以下条件检查列是偶数还是奇数: if((col % 2) == 0){} // 是偶数列 else{} // 是奇数列 然后相应地调整“雨”的方向。 代码 https://github.com/WillDonaldson/NeoPixel_Control_Board
|
|
相关推荐
|
|
为什么在频率为10^3 Hz处,产生的相移就可以确定约为-90度
1009 浏览 1 评论
【高手问答】电路的功能是为了0.6v到40v之间调压,运放发热严重
3251 浏览 8 评论
USB3.0 工业相机的传输速率是否受到电脑主板某些硬件的限制?
1188 浏览 0 评论
2381 浏览 1 评论
1321 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:21 , Processed in 0.709425 second(s), Total 71, Slave 50 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号