Кто имел дело со светодиодными лентами с пиксельной адресацией (ws2812b)? Помогите!

Тема в разделе "Arduino & Shields", создана пользователем nedfart, 20 мар 2016.

  1. smesher

    smesher Нерд

    такая вот библиотека FastLed, но я писал код не сам, взял с сайта, и действовал по инструкции, но так это моя первая "проба пера" все слишком сложно и не понятно, что аж бесит. Да и форумы для меня в новинку, обычно только мотоциклетные юзаю...
     
  2. parovoZZ

    parovoZZ Гуру

    там достаточно
    Код (C++):
    #include "FastLED.h"
     
  3. smesher

    smesher Нерд

    понял,но к сожалению проблема не в коде, что то с самой лентой, потому что применил код для проверки диодов отдельно и опять первые 6 работали и мигали, а остальные нет,вот думаю как делать...
    Код (C++):
    #include "FastLED.h"

    // How many leds in your strip?
    #define NUM_LEDS 92

    // For led chips like Neopixels, which have a data line, ground, and power, you just
    // need to define DATA_PIN.  For led chipsets that are SPI based (four wires - data, clock,
    // ground, and power), like the LPD8806 define both DATA_PIN and CLOCK_PIN
    #define DATA_PIN 13
    //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.
          // FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
           FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
          // FastLED.addLeds<APA104, 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<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
         
          // FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);

          // FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
          // FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
    }

    void loop() {
      // Turn the LED on, then pause
      leds[92] = CRGB::Red;
      FastLED.show();
      delay(500);
      // Now turn the LED off, then pause
      leds[92] = CRGB::Black;
      FastLED.show();
      delay(500);
    }
     
  4. ZAZ-965

    ZAZ-965 Гуру

    Код (C++):
    leds[92] = CRGB::Red;
    вышли за пределы массива
     
  5. smesher

    smesher Нерд

    да,спасибо,там последний получается должен быть 91, но он все равно не работает, не знаю ,в чем проблема
     
  6. ZAZ-965

    ZAZ-965 Гуру

    У вас лента подключена к 13 пину, а на нем вроде встроенный светодиод висит - его выпаивали? Или попробуйте перенести на другой пин.
     
  7. ostrov

    ostrov Гуру

    Контакты то все есть, стесняюсь спросить? По питанию и сигнальные? Может между 6 и 7 тупо обрыв?
     
  8. smesher

    smesher Нерд

    Нет, не выпаивал его, а он мешает?В ролике автора на ютубе с ним ничего не делали. А по схеме да, к нему подключается
     
  9. ostrov

    ostrov Гуру

    Нормально 13 для них, хватает и 3В для сигнала.
     
  10. smesher

    smesher Нерд

    я прозванивал целиком всю цепь:и по земле и по +5V к началу и к концу подключал мультиметр на сопротивление и на всякий на прозвонку диодов-работает. а на питание если щупы прикладывать к начали и к концу-то он ничего не показывает, но вот если в режиме прозвонки диода прикладывать черный щуп к Din а черный к земле - то он покажет какое то значение сопротивления получается. Может я что-то не так мерию? Я сравнивал с треснувшим диодом, который лопнул при первом подключении. У него не было контакта с Din на GND, а у нормальных есть. Или я что то не то мерил?
     
  11. Эти светодиоды очень боятся статики, и один посередине ленты вполне мог откинуть копыта.
     
  12. parovoZZ

    parovoZZ Гуру

    Там проблема вырезать диод? Онож один меж линиями разреза.
    Смысл лезть в интегральную схему тестером?
     
  13. smesher

    smesher Нерд

    диод вырезал-проблема осталась
     
  14. smesher

    smesher Нерд

    бояться это да, но если он откинулся, то почему же все контакты в порядке и разрыва не наблюдается? буду рад,если мне скажут что я ошибаюсь и мерил неправильно, потому что неведение убивает)
     
  15. Показывайте осциллограмму сигнальной линии, если измеряли.
     
  16. smesher

    smesher Нерд

    осциллограмму не мерил,нету такого инструмента(
     
  17. Протокол приблизительно следующий: умные диоды не адресуются произвольно, а получают свою порцию кода из пакета, она самая первая, остальное (уже без той части которую сами получили) отправляют следующим диодам. Если один сдулся то остальные отдыхают.
     
    ostrov нравится это.
  18. Тогда что вы измеряли? Проводимость дорожек на субстрате? Я вам говорю про то, что сам контроллер светодиода мог выйти из строя. Подключайте сигнальную линию дальше по ленте.
     
  19. parovoZZ

    parovoZZ Гуру

    Вырезай предыдущий.
     
  20. parovoZZ

    parovoZZ Гуру

    тоже, да не тоже.