1

我们目前正在做一个小项目,但遇到了一些问题。我们需要一个 0-10V PWM 信号来控制一些 LED。由于我们需要单独控制大约 30 个 LED,我们决定使用两个由 Arduino MINI 控制的 Adafruit 24 通道 12 位 LED 驱动器。

我们将下一段代码上传到 Arduino,但 adafruit 板上没有电压输出。我们怀疑问题出在编程上,我们在网上搜索了解决方案,但找不到任何解决方案。有人可以帮助我们吗?

#include "Adafruit_TLC5947.h"

#define NUM_TLC5974 1

#define data   4
#define clock   5
#define latch   6
#define oe  -1  // set to -1 to not use the enable pin (its optional)

Adafruit_TLC5947 tlc = Adafruit_TLC5947(NUM_TLC5974, clock, data, latch);

void setup() {

  Serial.begin(9600);

  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);

  tlc.begin();

  tlc.setPWM(0, 2000);
  tlc.write();

  tlc.setPWM(1, 4096);
  tlc.write();

  tlc.setPWM(2, 1000);
  tlc.write();


}

void loop() {
}
4

2 回答 2

1

如果要在 TLC5947 的任何通道上获得电压,则必须在每个通道上添加一个上拉电阻。TLC5947 的输出是集电极开路,这就是我们将 LED 的阴极连接到通道,将阳极连接到源极的原因。

于 2019-06-18T08:51:03.697 回答
0
  1. 您是否在 IRef 引脚和接地之间连接了约 1k 或 2k 的电阻?
  2. 把东西放在 void loop() 中。原因 - 您不能将 TLC 内的移位寄存器保持在浮动状态。

由于您在 setup() 中执行操作,因此它只会在 uC 引脚上写入一次。如果您看到 tlc.write() 的代码,则锁存器引脚翻转并且移位寄存器再次变为空。当代码到达 void loop() 时,它基本上什么都不做,并且您在 setup() 中定义的状态已经随 tlc.write() 语句消失了。

于 2014-09-22T05:56:06.933 回答