Светоиды WS2811 - иногда мигают непонятным цветом
- Войдите на сайт для отправки комментариев
Чт, 30/11/2017 - 20:01
Начинаю знакомится с LED-ами WS2811
Никак не пойму почему выводятся левые цвета. Использую укороченный стандартный пример. В setup устанавливаю цвета и больше их не меняю. Однако периодически некоторыные LED загораются не зеленым цветом. Плата Arduino Unu
Может кто-то может подсказать причину такого поведения. Вообще и в других примерах некоторые LED иногда загораются непонятным цветом. Если не саму причину, то хоть направление куда смотреть. Ниже код примера.
p.s.отдельно непонятно что делать с 4-ым проводом. Т.е. два - питание. Один - данные. Ещё один (белый) - ?
Может мне прислали не то что нужно и поэтому такие артифакты?
#include <Adafruit_NeoPixel.h> #ifdef __AVR__ #include <avr/power.h> #endif #define PIN 2 // Parameter 1 = number of pixels in strip // Parameter 2 = Arduino pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(50, PIN, NEO_RGB + NEO_KHZ800); // IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across // pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input // and minimize distance between Arduino and first pixel. Avoid connecting // on a live circuit...if you must, connect GND first. void setup() { // This is for Trinket 5V 16MHz, you can remove these three lines if you are not using a Trinket #if defined (__AVR_ATtiny85__) if (F_CPU == 16000000) clock_prescale_set(clock_div_1); #endif // End of trinket special code for(uint16_t i=0; i<strip.numPixels(); i++) { strip.setPixelColor(i, strip.Color(0, 255 * i / strip.numPixels(), 0)); //delay(wait); } strip.begin(); strip.show(); // Initialize all pixels to 'off' } void loop() { strip.show(); delay(1000); }
Да, прислали не то, что нужно.
Можете по фото определить что мне прислали?
1) Красный
2) Зеленый
3) Белый
Где четвертый?
Так же - посмотрите внимательно на стр. 11, 12, 16
Красный+белый в руке - это питание.
За LED находится разъем с зеленым (данные) и белым проводом. Вот что это за белый провод - непонятно.
(хотя между лампочками действительно всего 3 провода)
p.s.можно ссылку на страницу 11, а то не очень понял где эти страницы искать?
В посте №0 c кодом - строчки 11, 12, 16.
Через пальцы я не вижу, откуда выходит загадочный белый провод, но раскинутые на столе карты мне показали на землю.
Торможу. Прочитал "стр" как "страница" :)
Пробовал указать NEO_KHZ400 вместо NEO_KHZ800 - не помогло. Возможно потому что белый провод не соединил с землей.
Всем большое спасибо. WS2811 побежден. Нужно было второй белый провод тоже к GND подключить. Новичок я ещё в этом деле.
продолжу тут вопросы задавать. Зажигаю все 50 лампочек зеленым (синим) - все горят ярко. У половины цвет меняю на красный - красные горят ярко, зеленые (синие) тускнеют. В чем может быть причина?
p.s.блок питания на 5А (60 Вт), так что питания должно хватать.
p.s.s.Может кто-нибудь ткнет в статью по этим LED-ам где все объясняется, чтобы не отвечать на все мои глупые вопросы.
БП-то может и хватать, а вот на сечении проводов китайцы часто экономят. И на других деталях тоже. Поэтому тут всегда рулетка...
Снизьте brightness страйпа (функция библиотечная есть в adafruit_neopixel, понаблюдайте). Запитайте страйп с обоих сторон...
Помогло
Попробовал подать питание с обоих сторон - визуально разницы не видно. В любом случае спасибо за помощь. Теперь хоть не бросается в глаза уменьшение яркости.