需求:用Arduino或者51单片机控制32个RGB LEG的状态
具体需求:
1、一共又32个LED,每个LED有一个单独的控制开关,该控制开关控制LED亮灯/灭灯
2、有6个单独的颜色设置按键,每个按键对应红黄蓝绿粉紫6种颜色中的1种,按下颜色设置键后,再按任意LED控制开关,该LED亮指定颜色灯光。例如,先按下红色设置键,再随机按下5个LED按键,该5个LED均显示红色,无论此前状态时亮灯、灭灯还是亮其他颜色灯光。
3、Arduino实时记录所有LED的状态,并可以将LED状态数据发送给其他外接设备。
关于答案
请提供原理图
楼主你好,刚好有做过类似项目:
以下是总的接线图:
局部放大图:
说明:
1.LED的控制开关信号由Arduino Mega2560输入
2.LED的颜色控制由PCA9685来提供,这里是简化版,因为楼主所采用的RGB三色灯,那么控制I/O是3倍,共需要96个I/O,所以是需要6块PCA9685
3.如果楼主执意要采用Arduino uno的话是以上方案,其实改换成Arduino mega2560更合适,流程会更简单。
控制思路:
1.按下arduino uno颜色开关,选择颜色
2.随机按下LED控制开关,传递信号给上位机arduino uno
3.arduino uno根据1,2步骤选择的信号,输出具体颜色的PWM
4.由主机arduino uno将记录的1,2步骤的数据传递给外围设备
制作不易望采纳,采纳后可继续提供具体技术支持,谢谢。
买几个38译码器 或者时使用iic进行扩展几个io
Arduino uno 的IO不够,得扩展
类似这种吗?
用89C51单片机控制74HC138译码器点亮32位LED灯的方法
来源:电工天下时间:2021-04-01 09:56:03 作者:老电工手机版>>
74HC138译码器点亮32位LED灯
若要求32个灯每个都可单独控制,亮灭状态互不影响,有几种方案供参考:
方案1:32根接口线,且每条线要加驱动门,如4片74HC244,需要接口线太多,非最优方案。
方案2:32位所锁存器,如4片74HC373,及其8根数据线,4根选通/锁存线。
方案3:8位串/并移位寄存器,典型的如4片74HC595,需要数据线,移位时钟和锁存信号各一根,用接口线最少,功能简单,32灯都可亮,但同时只能亮一个灯,如果要另一个灯亮,则只能关掉这个,只能演示一个灯跑动的流水灯。
方案4:需要4片74HC138,5根选择线。
总结:
以上1.2.3方案,只要程序速度可以,可以实现各种复杂变化,包括LED灰度控制。所有芯片都可用74LS系列,但74HC系列易驱动,比较省电。
使用74HC595也可以,24个输出。程序循环读取输入高电压(自锁),LED所需序号灯输出高电平以及颜色高电平。注意pin叫脚设置;黄粉紫可以对应rbg255-x设计;当按下某一序号灯,多选颜色时同样可以输出叠加