Управление светодиодным прожектором 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(); // очищаем полосу в конце цветового цикла
}
@Marcatectura, 👍-1
Обсуждение1 ответ
Если предположить, что напряжение питания UCS2904B составляет 12 вольт, то в этом документе высокий логический уровень определяется как 0,6 x VDD.

Таким образом, для 12 вольт напряжение VDD будет равно 7,2 вольта. Процессоры, используемые в большинстве устройств Arduino, выдают напряжение 3,3 или 5 вольт. Возможно, напряжение высокого логического уровня используемых вами плат Arduino недостаточно высоко, чтобы его мог распознать UCS2904B.
Рассмотрите возможность добавления преобразователей уровня между Arduino и UCS2904B.
- Передача цвета функции без использования определенного Adafruit_NeoPixel
- Библиотека FastLED: Как настроить яркость одного пикселя в абсолютном масштабе?
- Управлять несколькими полосками WS2812B с разным количеством светодиодов.
- Адресная RGB-полоса работает по отдельности, но не может настроить все светодиоды на полностью белый цвет.
- Настройка 10 RGB-лент независимо от одного Arduino
- Светодиодная лента WS2812B + First Pixel продолжает ломаться
- FastLED fill_rainbow - Неожиданный красный пиксель
- Использование кольца NeoPixel без Arduino
пожалуйста, скопируйте и вставьте содержимое последовательного монитора в ваш вопрос... без изображений, только текст, @jsotola
откуда вы знаете, что светодиод управляется так же, как и неопиксель?, @jsotola