使用Arduino Mini控制的adafruit TLC5947

使用Arduino Mini控制的adafruit TLC5947,arduino,led,pwm,Arduino,Led,Pwm,我们目前正在做一个小项目,但遇到了一些问题。我们需要一个0-10V PWM信号来控制一些LED。由于我们需要单独控制大约30个LED,我们决定使用两个由Arduino MINI控制的Adafruit 24通道12位LED驱动器 我们将下一段代码上传到Arduino上,但adafruit板上没有电压输出。我们怀疑问题在于编程,我们在网上搜索解决方案,但找不到任何解决方案。有人能帮我们吗 #include "Adafruit_TLC5947.h" #define NUM_TLC5974 1 #d

我们目前正在做一个小项目,但遇到了一些问题。我们需要一个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() {
}
  • 您是否在IRef引脚和之间连接了~1k或2k值的电阻器 地面
  • 将事物放入void循环()。原因-您不能保留移位寄存器 TLC内部处于浮动状态
  • 由于您在setup()中执行操作,因此它将只在uC引脚上写入一次。
    如果看到tlc.write()的代码,闩锁销将翻转,移位寄存器再次变为空。当代码到达void loop()时,它基本上不起任何作用,并且您在setup()中定义的状态已随tlc.write()语句消失。

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

    我至少不同意第2点:tlc.setPWM从微控制器向TLC5947芯片发出SPI命令,导致tlc芯片生成PWM信号,那么你不需要µC,除非你想改变PWM比率或通道。我们在Adafruit的IRef引脚和地面之间添加了一个1k电阻,现在我们得到了一个信号。然而,我们得到的信号异常小。Adafruit连接到一个5V电源,但是我们得到的最大信号(PWM 100%)只是这个的一小部分。然而,这确实让我想到了下一个问题。当我们想要达到10V的电压时,我们尝试将Adafruit连接到10V电源。然而,Adafruit上的发光二极管没有生命迹象。根据数据表,这应该不是问题。