使用由Arduino Mini控制的adafruit TLC5947

时间:2014-09-20 13:34:45

标签: arduino led pwm

我们目前正在开展一个小项目,但我们遇到了一些问题。我们需要一个0-10V的PWM信号来控制一些LED。由于我们需要单独控制大约30个LED,我们决定使用两个由Arduino MINI控制的Adafruit 24-ch 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() {
}

2 个答案:

答案 0 :(得分:0)

  1. 您是否在IRef引脚上连接了值为1k或2k的电阻器 地面?
  2. 把东西放在void loop()中。原因 - 您无法保留移位寄存器 处于浮动状态的TLC内部。
  3. 由于你在setup()中做事,它只会在uC引脚上写一次。 如果看到tlc.write()的代码,则锁存器引脚翻转,移位寄存器再次变为空。当代码到达void loop()时,它基本上没有做任何事情,并且你在setup()中定义的状态已经没有了tlc.write()语句。

答案 1 :(得分:0)

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