带屏幕和按钮的两线(DMX)接口
0
准备工作:
材料:
- 含助焊剂的焊料
工具:
- 烙铁
- 钳子剪断导线
您需要什么









DMX选择地址的方法有很多种,但最常用的是使用 DIP 开关或带按钮的显示屏。使用 DIP 开关时,需要 9 个输入引脚(8 个用于地址,1 个用于模式)。
一个看起来更好、功能更丰富的方案是使用 7 段显示屏和一些按钮。这种方法显示屏占用 12 个引脚,按钮占用 4 个引脚,你可能还需要一些状态 LED。这意味着使用 arduino Uno/mini 或类似设备时,几乎没有剩余引脚。
为了解决这个问题,我设计了一个模块,它使用数字接口控制一个 4 位 7 段显示屏、4 个按钮和 3 个状态 LED,并且只使用 2 个数字引脚和 2 个 5V 和接地引脚。除了节省引脚数之外,这个模块本身也是数字的,这意味着您可以告诉它要显示什么,模块会记住。该模块还负责调节显示屏的亮度。
当然,这个模块可以用于您想要的一切,并不局限于与 DMX 灯具一起使用!
该模块的主要部件是 TM1637,它是一个用于驱动 LED 的模块。使用像 Arduino 这样的微控制器,您可以发送字节来控制哪些 LED 需要点亮。该模块还可以使用 PWM 信号调光 LED。无法单独调光 LED。所有组件都放置在定制的 PCB 上,但您也可以使用面包板或原型板。
如果您想制作如图所示的产品,您需要:
1 x 接口模块的 PCB https://www.pcbway.com/setinvite.aspx?inviteid=993...
如果您使用此链接,您将免费获得前 10 个 PCB,并支持我的新项目。
1 x 0.56 英寸 4 位数字显示屏(红色)共阳极 12 针 https://www.aliexpress.com/item/2PCS-0-56-4-Digit-...
1 x TM1637 DIP https://www.aliexpress.com/item/Si-Tai-SH-TM1637-D...
1 x 针头直或 90 度(4 针) https://www.aliexpress.com/item/10Pcs-Lot-40-Pin-2...
3 x 3mm led,红色、橙色和绿色。https ://www.aliexpress.com/item/5Colors-20PCS-100P...
4 x 触觉按钮 2 针https://www.aliexpress.com/item/20Pcs-Middle-2-pin...
获取PCB

此步骤包含 aegle 文件和 gerber 文件。我在这里订购了 PCB:
https://www.pcbway.com/setinvite.aspx?inviteid=993...
通过此链接,您可以免费获得 10 个 PCB 的第一个设计进行尝试,这对我也有帮助,因为当您使用此链接订购时,我会获得一点折扣。
Gerber 文件是由 PCBways 创建的,效果非常好。我订购了 10 块,颜色是蓝色,文字是白色。
您也可以将所有部件焊接到原型板上,而不必使用 PCB。
组装

如果您具备一些焊接技能,组装此模块并不难。首先,如果还没有断开排针条上的 4 个引脚,请将其断开。接下来将它们焊接到位,我从排针开始,因为它们在倒置时容易掉落。接下来我焊接了 LED,短引线(负极)在右侧,有标记,新版 PCB 会有 - 符号。焊接完 LED 后,我焊接了 4 个触觉按钮,然后是 TM1637 芯片。引脚 1 在左上方,用一个点标记。我焊接的最后部分是显示屏,孔非常紧,因此需要一些时间。
将所有部件焊接到位后,我修剪了所有引线并检查了错误。
测试和代码

组装完成后,就可以测试模块了。将 5V 连接到微控制器的 5V 电源,将 GND 连接到 GND。CLK 和 DIO 引脚可以在软件中定义,但默认 CLK 引脚为 2,DIO 引脚为 3。
下载代码并将其上传到你的 Arduino。此代码可能也适用于其他微控制器,但尚未测试。
Arduino 代码配置为每 200 毫秒更新一次屏幕并读取按钮。这样做是为了让 CPU 可以用于其他任务。使用上下按钮更改地址,地址将在 2 秒后自动保存。地址存储在 EEPROM 中,并在设置中加载。即使断电,地址也会保留在 EEPROM 中。
可以通过向模块发送一个字节来控制8个LED的状态LED。PCB上只连接了3个LED,但代码允许连接8个。代码未来会进行改进,使LED的开关更加便捷。
按钮连接为键盘矩阵,最多可使用 16 个按钮。目前不支持多按,但如果可能的话,将来可能会添加。
目前我正在开发一个库,以便更轻松地使用这个接口模块,但这可能需要一段时间。
需要改进的地方

订购并测试了PCB后,我发现了一些小改进。如果您发现任何改进或bug,请在评论区留言。也请解释一下,因为我喜欢学习如何改进我的项目!
目前我正在努力改进以下方面:
- 在电路板上添加一个小电容器以稳定电压
- 添加 LED 极性符号
- 使用更大的孔来显示
- 为代码编写一个库,使其更容易使用
- 更轻松地编写打开和关闭 LED 的代码
0
0
0
qq空间
微博
复制链接
分享