CMF海水观赏鱼论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 30832|回复: 83

LED路数不嫌多,DIY16路LED灯控制器(已共享源码)增加滴定功能_____爱浪客

  [复制链接]

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
发表于 2017-7-13 10:49:19 | 显示全部楼层 |阅读模式 来自: 中国河北石家庄
本帖最后由 pengpeng 于 2017-8-16 09:57 编辑

前一阵子看来论坛上一个兄弟的帖子。其中贴了AI灯的电路板照片,有一个IC给了特写,仔细一看是PCA9685。原来AI是用的专业的PWM芯片,并不是论坛上的常见的方案,由单片机占用IO输出PWM信号。
使用PWM芯片价格不高,但是调光可以更线型,更准确(共4096级)、稳定。有自己单独的晶振。更广泛的PWM频率等。
最主要的是使用I2C,单个IC就有16路,最多还(64*16)路。

这次我们就纯DIY,不用自己画电路板,全部使用某宝可以买到元器件。


连接图.jpeg


在这版本的基础上,添加以下元器件增加滴定功能,一个可以管理两路滴定泵
00000000004.jpeg
详细内容在65楼。

回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 10:51:04 | 显示全部楼层 来自: 中国河北石家庄
先来个全家福!
105103sddqdlb75ywkyyiz.jpg
回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 10:53:38 | 显示全部楼层 来自: 中国河北石家庄
1、单片机+wifi模块
105337arhgu1aahaaheb3b.jpg
回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 10:58:08 | 显示全部楼层 来自: 中国河北石家庄
接下来是单独的时钟模块,我觉得这个钱还是不省,代码还可以少写很多
105806o8qqnq8mqz2zlxnl.jpg
回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 11:01:05 | 显示全部楼层 来自: 中国河北石家庄
再来就是PWM模块了
测试可以用
110104avisvknuj5vuhi8s.jpg
回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 11:04:13 | 显示全部楼层 来自: 中国河北石家庄
本帖最后由 pengpeng 于 2017-7-22 09:26 编辑

再有就是一块降压模块了,2-3块钱。
14+6.2+9.45+3=32.65用杜邦线连接就可以了
因为时钟模块与PWM模块均使用I2C连接,直接连接单片机的D1、D2口即可(认清SCL、SDA别弄错就好了)

抱歉写错了!已经改回D1,D2口
连接.jpeg
回复

使用道具 举报

10

主题

412

回帖

842

积分

黄金会员

Rank: 4

积分
842
注册时间
2016-4-16
最后登录
2018-5-26
发表于 2017-7-13 11:36:45 | 显示全部楼层 来自: 中国江苏徐州
关键是软件系统
回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 11:47:49 | 显示全部楼层 来自: 中国河北石家庄

下面开始贴代码!

#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

int PWMfrequency = 1000;

void setPWM(uint8_t pwmnum, uint16_t pwmval) {
#ifdef ESP8266
  yield();
#endif
  pwm.setPWM(pwmnum, 0, pwmval );
}


setPWM(ledpin, (unsigned short) (map(light, 0, 100, 0, 4095)));

void setup() {
  pwm.begin();
  pwm.setPWMFreq(PWMfrequency);
}

回复

使用道具 举报

23

主题

384

回帖

1159

积分

铂金会员

Rank: 5Rank: 5

积分
1159
注册时间
2007-1-5
最后登录
2026-3-21
 楼主| 发表于 2017-7-13 11:48:40 | 显示全部楼层 来自: 中国河北石家庄
有空我会给大家提供一份代码做demo
回复

使用道具 举报

13

主题

968

回帖

2433

积分

钻石会员

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2433
注册时间
2016-3-25
最后登录
2024-12-28
发表于 2017-7-13 12:45:15 | 显示全部楼层 来自: 中国山西晋中
这个方案也蛮不错的。爱好者?程序员?还是嵌入式工程师?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|海友网CMF ( 琼ICP备12003277号 )

GMT+8, 2026-5-9 18:54 , Processed in 0.081584 second(s), 14 queries , MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表