Проблема с индивидуальными адресуемыми светодиодами Adafruit Neopixel - Любой код заставляет светодиоды "сходить с ума"

led neopixel led-strip

Привет всем, у меня возникла проблема с подключением этих светодиодов к сотрудничеству.

Я использую резистор 470 Ом на порту передачи данных и конденсатор для питания. Я выполнил и загрузил "strandtest" (я изменил переменные NUM_LED и LED_PIN), и это происходит [10-секундное видео: https://drive.google.com/file/d/1xabkHW1xgFo9kh3YnGwIsaS5tSfFCsrb/view?usp=sharing ] Это происходит со всем кодом в цикле. Если я не посылаю никаких сигналов (то есть ставлю пустой контакт и запускаю), то индикаторы, которые горели последним, остаются горящими. Если я попытаюсь очистить светодиод, ничего не произойдет. Если я попытаюсь настроить конкретный светодиод на определенный цвет / яркость, ничего не произойдет.

Я в тупике; помоги брату выбраться!

Используемыесветодиоды: https://www.amazon.com/gp/product/B00ZHB9M6A/ref=ppx_yo_dt_b_asin_title_o02_s01?ie=UTF8&th=1 Переменный ток в постоянный 5 В 5A: https://www.amazon.com/ALITOVE-Converter-5-5x2-1mm-100V-240V-Security/dp/B078RT3ZPS/ref=pd_bxgy_img_2/143-9706163-2199558?_encoding=UTF8&pd_rd_i=B078RT3ZPS&pd_rd_r=4133e781-45a6-4112-a571-c311f45e0720&pd_rd_w=t0bs4&pd_rd_wg=TIEcS&pf_rd_p=f325d01c-4658-4593-be83-3e12ca663f0e&pf_rd_r=PPCEVPJVY8N6XFTY1AD4&psc=1&refRID=PPCEVPJVY8N6XFTY1AD4

#include <FastLED.h>

// Сколько светодиодов в вашей ленте?
#define NUM_LEDS 150

// Для светодиодных чипов, таких как WS2812, которые имеют линию передачи данных, заземление и питание, вы просто
// необходимо определить DATA_PIN.  Для светодиодных чипсетов на основе SPI (четыре провода - данные, часы,
// земля и питание), таких как LPD8806, определите как DATA_PIN, так и CLOCK_PIN
// Вывод синхронизации необходим только для чипсетов на базе SPI, если не используется аппаратный SPI
#define DATA_PIN 3
#define CLOCK_PIN 13

// Define the array of leds
CRGB leds[NUM_LEDS];

void setup() { 
    // Uncomment/edit one of the following lines for your leds arrangement.
    // ## Clockless types ##
    //FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);  // GRB ordering is assumed
    // FastLED.addLeds<SM16703, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1829, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1812, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS1904, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<UCS2903, DATA_PIN, RGB>(leds, NUM_LEDS);
     //FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<WS2852, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

  FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical

    // FastLED.addLeds<GS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SK6812, DATA_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<APA106, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<PL9823, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SK6822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2813, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2811_400, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GE8822, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<LPD1886, DATA_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<LPD1886_8BIT, DATA_PIN, RGB>(leds, NUM_LEDS);
    // ## Clocked (SPI) types ##
    // FastLED.addLeds<LPD6803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // GRB ordering is typical
    // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<WS2803, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
    // FastLED.addLeds<SK9822, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);  // BGR ordering is typical
}

void loop() { 
  // Включите светодиод, затем сделайте паузу
  leds[0] = CRGB::Red;
  FastLED.show();
  delay(500);
  // Теперь выключите светодиод, затем сделайте паузу
  leds[0] = CRGB::Black;
  FastLED.show();
  delay(500);
}

, 👍1

Обсуждение

Пожалуйста, также опишите словами, что происходит на самом деле и насколько это не соответствует вашим ожиданиям. Не все хотят сначала посмотреть ваше видео, и ссылка может через некоторое время отключиться, что сделает вопрос непонятным. И, пожалуйста, поделитесь своим кодом. Если вы использовали пример кода, пожалуйста, дайте на него ссылку. Также точно опишите, что и как вы изменили., @chrisl

Конечно, последнее состояние светодиода сохраняется, когда вы не посылаете никаких сигналов. Вот как работают эти светодиоды. Они сохраняют свое состояние до тех пор, пока вы не отправите им новые данные или не включите их. Что вы имеете в виду, говоря "Если я попытаюсь очистить светодиод, ничего не произойдет"? Вы пытаетесь, пока полоска находится на неиспользуемом штифте? Если нет, то как и где именно в коде вы пытаетесь его очистить?, @chrisl

Вы подключили заземление светодиодов к заземлению вашего Arduino? Я действительно не могу видеть из вашего видео, но я подозреваю, что вы этого не сделали. Кстати, гораздо лучше описать, как все соединено вместе, вместо того, чтобы показывать видео, в котором вы действительно мало что видите, кроме мигающих светодиодов. Схема была бы еще лучше., @StarCat

@StarCat Я вижу заземление от Arduino к макетной плате. Однако, если заземление макетной платы является непрерывным, я не могу точно сказать., @Majenko

@Alex попробуйте эту библиотеку: https://github.com/FastLED/FastLED вместо Adafruit Neopixel библиотека FastLED очень удобна и очень мощна, я предпочитаю ее Neopixel. Просто для того, чтобы вы знали, что есть и другие варианты., @k.Cyborg

Итак, я использую базовый пример blink в библиотеке FastLED и обновил сообщение, включив в него код. Однако после загрузки светодиодной ленты она снова выдает случайные результаты. На этот раз только первые 10 светодиодов мигают случайными цветами примерно 1-2 раза в секунду, остальные светодиоды выключены., @Alex

Я приложил новую фотографию моего плана подключения, а также то, что я на самом деле сделал (источник питания 5 В отсутствует на фотографии)., @Alex


1 ответ


2

Не используйте библиотеку Neopixel. для светодиодов с WS2812B лучшим вариантом является FastLED. У меня также были проблемы с случайным включением и выключением светодиодов, но использование этой библиотеки, а затем смена драйвера на W2812B заставили его работать. Ваш источник питания достаточно силен.

,