Почему моя комбинация Arduino/Ledstrip не работает?

arduino-uno led-strip

схема

Я использую Arduino Uno и светодиодную ленту WS2813 (60 светодиодов).

Это похоже на схему по умолчанию (за исключением того, что я использовал электролитический конденсатор на 470 мкФ вместо электролитического конденсатора на 1000 мкФ.

(я случайно пометил контакт VCC U1 VSS).

У меня не горит ни один светодиод на светодиодной ленте.

Программа, которую я использовал:

#include <FastLED.h>

#define NUM_LEDS 60
#define DATA_PIN 7

CRGB leds[NUM_LEDS];
bool led = false;

void setup() { 
    //FastLED.addLeds<WS2813, DATA_PIN>(leds, NUM_LEDS);
    FastLED.addLeds<WS2813, DATA_PIN>(leds, NUM_LEDS);
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() 
{
    for (int i = 0; i < NUM_LEDS; i++)
    {
      leds[i] = CRGB::Red;
    }
    FastLED.show();
    led = !led;
    digitalWrite(LED_BUILTIN, led ? HIGH : LOW);
    delay(1000);
}

Что я пробовал:

  • Проверка различных выводов данных на Arduino
  • Проверка разных проводов
  • Проверяем, что над D7 и после резистора действительно сопротивление 330 Ом (было 345 Ом)
  • Пробовали разные пины данных (и адаптировали сцену для использования других пинов данных)
  • Проверка того, горит ли светодиод D1 (подается 5 В)
  • Проверяем, что на конце WS2813 есть разница VCC и GND 5В (около 5,1 В)
  • Проверяем, действительно ли существует разница 5 В между адаптером + и – (было 5,2 В без нагрузки).
  • Пытался с заземленным и неподключенным BI WS2813
  • Пробовал без резистора 330 Ом.
  • Проверено с той же схемой, но с WS2812B (с адаптацией кода для использования WS2812B)
  • Использовались разные тайминги для встроенного индикатора, чтобы убедиться, что скетч действительно загружен.
  • Пробовал с , RGB) добавлено в строку: FastLED.addLeds<WS2812B, DATA_PIN, RGB>(светодиоды, NUM_LEDS);
  • С помощью логического анализатора я вижу, что каждую секунду происходит короткий пакет данных (не анализируется, что именно, я предполагаю, что FastLed надежен).

Все без разницы.

Тем не менее, я увидел, что данные логического анализатора ПОСЛЕ резистора 330 Ом в основном удаляют данные, в то время как данные до резистора в порядке. Однако при снятии сопротивления светодиодная лента все равно не загорается.

Канал 0 перед резистором, канал 1 после:

введите описание изображения Что я сделал не так?

, 👍-1

Обсуждение

Вы подключили к правильному концу светодиодной ленты?, @jsotola

@jsotola ДА ... я должен был спросить раньше :-); Если вы поместите это как ответ, я проголосую за него / приму его., @Michel Keijzers


1 ответ


Лучший ответ:

1

Важно подключить цифровой контакт Arduino к правильному концу светодиодной ленты.

Светодиодные ленты имеют однонаправленную линию передачи данных.

Подключения питания и заземления могут быть выполнены с любого конца, но ВХОД данных находится на одном конце, а ВЫХОД данных — на другом конце.

Такое расположение предназначено для последовательного соединения светодиодных лент.

Сами светодиоды также имеют вход данных и выход данных, а также соединены последовательно с соседними светодиодами.

Светодиоды последовательно соединены друг с другом через линию передачи данных и подключены параллельно к линиям питания и заземления.

,

Да, я заметил, что есть направление (что логично). Угадайте, когда я попробовал это раньше, это сработало мгновенно, вероятно, потому, что я случайным образом выбрал тогда правильную сторону, а теперь неправильную., @Michel Keijzers