Управление светодиодным прожектором UCS2904 с помощью библиотеки Neopixel

Я пытаюсь управлять одним из этих прожекторов UCS2904 с помощью библиотеки Neopixel. Согласно документации на микросхему, она использует частоту 800 кГц и порядок следования RGBW, которые установлены в моём коде для Arduino, протестированном как на Uno, так и на Mega. Независимо от платы, прожектор включается синим цветом, а затем, похоже, не реагирует ни на какие команды с Arduino. Те же платы и код работают без проблем с цепочками 12-вольтовых WS2811. Надеюсь, кто-то уже работал с этими микросхемами или прожекторами и сможет подсказать!

Код:

#include <Adafruit_NeoPixel.h>

const int neoPixelPin = 10;  // управляющий вывод
const int numPixels = 1;    // количество пикселей

// настраиваем полосу:
 // ПАРАМЕТРЫ НИЖЕ ОТНОСЯТСЯ К ЧИПУ UCS2904 - RGBW, 800 кГц
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numPixels, neoPixelPin, NEO_RGBW + NEO_KHZ800);
unsigned long color = 0xFF;   // начинаем с синего

void setup() {
  strip.begin();    // инициализируем пиксельную полосу
  strip.clear();    // выключить все светодиоды
  strip.show();     // обновить полосу
  Serial.begin(9600);
}

void loop() {

  // цикл по всем пикселям:
  for (int pixel = 0; pixel < numPixels; pixel++) {
    strip.setPixelColor(pixel, color);// устанавливаем цвет для этого пикселя
    if (pixel > 0) {
      strip.setPixelColor(pixel - 1, 0); // отключаем последний пиксель
    }
    Serial.println(color, HEX);
    strip.show();    // обновить полосу
    delay(500);
  }
  Serial.println(color, HEX);
 delay(3000);       // ждем 1 секунду перед запуском следующего цвета.
 
   if (color == 0xFF000000) { // если цвет белый (0xFF000000)
     color = 0xFF;            // затем устанавливаем обратно синий
     // примечание: если вы используете пиксели RGB вместо RGBW, используйте
     // 0xFF0000 для вашего самого высокого цвета вместо 0xFF000000
   } else {
     color = color << 8;      // смещаем светящийся цвет (значение FF или 255) к следующему цвету
   }

  strip.clear();             // очищаем полосу в конце цветового цикла
}

, 👍-1

Обсуждение

пожалуйста, скопируйте и вставьте содержимое последовательного монитора в ваш вопрос... без изображений, только текст, @jsotola

откуда вы знаете, что светодиод управляется так же, как и неопиксель?, @jsotola


1 ответ


0

Если предположить, что напряжение питания UCS2904B составляет 12 вольт, то в этом документе высокий логический уровень определяется как 0,6 x VDD.

таблица из спецификации UCS2904B с обведенным определением входного напряжения высокого уровня

Таким образом, для 12 вольт напряжение VDD будет равно 7,2 вольта. Процессоры, используемые в большинстве устройств Arduino, выдают напряжение 3,3 или 5 вольт. Возможно, напряжение высокого логического уровня используемых вами плат Arduino недостаточно высоко, чтобы его мог распознать UCS2904B.

Рассмотрите возможность добавления преобразователей уровня между Arduino и UCS2904B.

,