Использование Adafruit TLC5947 контролируется Arduino Mini

В настоящее время мы работаем над небольшим проектом, но столкнулись с некоторыми проблемами. Нам нужен 0-10В ШИМ-сигнал для управления некоторыми светодиодами. Поскольку нам необходимо индивидуально управлять около 30 светодиодами, мы решили использовать два 24-канальных 12-разрядных драйвера светодиодов Adafruit, управляемых Arduino MINI.

Мы загрузили следующий фрагмент кода на 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() {
}

1 ответ

Если вы хотите получить напряжение на любом канале TLC5947, вам нужно добавить подтягивающий резистор на каждый канал. Выходы TLC5947 - открытый коллектор, поэтому мы подключаем катод светодиода к каналам, а анод - к источнику.

  1. Вы подключили резистор величиной ~ 1 кОм или 2 кОм к контакту IRef и заземлению?
  2. Поместите вещи в пустую петлю (). Причина - Вы не можете хранить сдвиговые регистры внутри TLC в плавающем состоянии.

Так как вы делаете что-то в setup(), он будет записан на выводе uC только один раз. Если вы видите код tlc.write(), защелка выводится и регистр сдвига снова становится пустым. Когда код достигает void loop(), он в основном ничего не делает, и ваши состояния, определенные в setup(), уже исчезли с помощью оператора tlc.write ().

Другие вопросы по тегам