Требуется помощь с лентой ws2811

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

  1. moonlight1

    moonlight1 Нерд

    Доброго дня всем. Дошли руки до хотелки в виде освещение коридора по датчику движения с датчиком освещенности. С датчиком движения проблем нет, датчик освещенности пока не приехал, а вот с лентой косяк. Есть у меня лента на ws2811. Подключаю вроде работает но на тестовых скетчах ерунду выдает. Есть кусок ленты с 12 светодиодами, запускаю например скетч RGBCalibrate из библиотеки FastLED. Как я понимаю по работе скетча лента должна 4 светодиода(или 4 группы по 3 светодиода) соответственно
    первый светодиод(группа) красного цвета, второй и третий зеленого и четвертый синего, но такого не происходит. Вот и думаю или я не понимаю или лента глючная.

    Код (C++):
    #include "FastLED.h"

    #define NUM_LEDS 4 //ставил как 4 так и 12 все равно успеха не принесло

    // Data pin that led data will be written out over
    #define DATA_PIN 7
    // Clock pin only needed for SPI based chipsets when not using hardware SPI
    //#define CLOCK_PIN 8

    CRGB leds[NUM_LEDS];

    void setup() {
        // sanity check delay - allows reprogramming if accidently blowing power w/leds
           delay(2000);

           FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);//менял  RGB на BRG и на GRB успеха тоже не принесло
    }
    void loop() {
       leds[0] = CRGB::Red;
       leds[1] = CRGB::Green;
       leds[2] = CRGB::Green;
       leds[3] = CRGB::Blue;

       FastLED.show();
       delay(1000);
    }

    [​IMG]
    [​IMG]
    [​IMG]
    Если кто поможет буду очень благодарен.
    Лента питается от БП 12в-1А
     
  2. Onkel

    Onkel Гуру

    а разве не 5 В нужно?
     
  3. moonlight1

    moonlight1 Нерд

    для этой надо 12в, брал у китайцев на странице заказа написано 12в и от 5в она просто не заводится значит 12в надо :)
    **upd**
    Попробовал другую библиотеку и другой код, который должен зажечь только один светодиод:
    Код (C++):
    #include <Adafruit_NeoPixel.h>
          #define PIN 7
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, PIN, NEO_RGB + NEO_KHZ400);
    void setup() {
        strip.begin();
        strip.show(); // Initialize all pixels to 'off'
    }
    void loop() {
    strip.show();
    strip.setPixelColor(0, 0, 0, 255);
    }
    но опять успеха нет, лента горит полностью.
    думал в ардуине дело другую плату взял - тоже самое, лента получается кривая или просто надо как то хитро писать код?
     
    Последнее редактирование: 22 окт 2016
  4. Tomasina

    Tomasina Иномирянин

    попробуй библиотеку FastLED и в ней раскомментируй указание что это WS2811.
    У меня с ней работает и APA102, и WS2812, и WS2811A.
     
    ciwo нравится это.
  5. moonlight1

    moonlight1 Нерд

    взял из примеров RGBCalibrate
    Код (C++):
    #include "FastLED.h"
    #define NUM_LEDS 4
    // Data pin that led data will be written out over
    #define DATA_PIN 7
    // Clock pin only needed for SPI based chipsets when not using hardware SPI
    //#define CLOCK_PIN 8
    CRGB leds[NUM_LEDS];
    void setup() {
        // sanity check delay - allows reprogramming if accidently blowing power w/leds
           delay(2000);
          FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
    }
    void loop() {
       leds[0] = CRGB(255,0,0);

       FastLED.show();
       delay(1000);
    }
    маленько не ясно в NUM_LEDS писать сколько диодов или сколько пачек по 3шт? тк тут 1 микросхема управляет сразу 3мя диодами.
    ну написал что 12 что 4 все равно горят все или первые и последние 3штуки или первые 3 горят ярко а последние 3 чуть чуть. непонятно
    с этим кодом так горит лента:
    [​IMG]
     
  6. Tomasina

    Tomasina Иномирянин

    это точно 2811? Потому как для всех WSxxxx один LED - это строго один светодиод физически, но никак не пачка из 3-х.
    NUM_LEDS - это сколько светодиодов на ленте (ну или сколько тебе нужно задействовать, тогда остальные будут погашены.
     
  7. moonlight1

    moonlight1 Нерд

    не я имею ввиду что 1 микросхема управляет 3мя светодиодами, когда как в ws2812 там в каждом светодиоде стоит своя микросхема для управления вроде же так?
    [​IMG]
     
  8. Tomasina

    Tomasina Иномирянин

    странная конструкция. И каждый LED светится только одним цветом? Или все три всегда включаются одинаково? Тогда прими это как конструктивную особенность.
     
  9. moonlight1

    moonlight1 Нерд

    каждый LED он RGB ну или как его припаяли) но в нем 3 цвета. ну и мне надо как то ей управлять. добиться того чтобы светила одним цветом без мерцания пеманентно так сказать)
     
  10. Tomasina

    Tomasina Иномирянин

    то есть неправильно включаются цвета? Вместо Blue зеленый включается?
    Тогда попробуй в строке
    Код (C++):
    fastLED.addLeds<WS2811, DATA_PIN, RGB>
    RGB заменить на GRB или BGR.
     
  11. moonlight1

    moonlight1 Нерд

    я пробовал, допустим я хочу зажечь только 3 светодиода из 12 но горят или все или больше 3х не понятно как она работает. вот видео как работает лента с таким кодом:
    Код (C++):
    #include "FastLED.h"
    #define NUM_LEDS 12
    #define DATA_PIN 7
    CRGB leds[NUM_LEDS];
    void setup() {
      // sanity check delay - allows reprogramming if accidently blowing power w/leds
      delay(2000);
      FastLED.addLeds<WS2811, DATA_PIN, BGR>(leds, NUM_LEDS);
    }
    void loop() {
      leds[0] = CRGB(255, 0, 0);
      FastLED.show();
      delay(1000);
    }



    По коду должен же гореть первый светодиод ведь так? но этого не происходит и не понятно почему.
     
    Последнее редактирование: 22 окт 2016
  12. Tomasina

    Tomasina Иномирянин

    да, странно.
     
  13. moonlight1

    moonlight1 Нерд

    значит получается дело в ленте... нет идей как заставить ее работать?
    **UPD**
    все! решилась проблема. я затупок землю ленты на землю ардуины не положил вот оно и выдавало ересь. спасибо за то что попытались помочь.
    Код (C++):
    void loop() {
    leds[0] = CRGB(0, 0, 255);
    leds[1] = CRGB(0, 255, 0);
    leds[2] = CRGB(255, 0, 0);
    leds[3] = CRGB(255, 255, 255);
    FastLED.show();
    delay(1000);
    }
    [​IMG]
     
    Последнее редактирование: 22 окт 2016
    repon нравится это.
  14. repon

    repon Нуб

    а в чем может быть проблема nodeMcu + ws2811 (50лед) + БП5В12А.
    от nodeMcu - usb - все работает. вырубаю usb, подключаю к БП - мигают только первые несколько диодов...
     
  15. Tomasina

    Tomasina Иномирянин

    WS2811 - это 12- вольтовые чипы.
     
  16. repon

    repon Нуб

    Есть и 5 вольтовые)) брал их)
     
  17. priz

    priz Нуб

    Добрый день!
    Столкнулся с аналогичной проблемой
    -12 приземлял на GND эффекта нет WS2811 просто светит белым цветом на любом скетче
    Управляющий провод через резистор (200-400 ом) пускали?
    Покажите вашу схему подключения DC-Arduino-LED
    Спасибо!!
     
  18. Securbond

    Securbond Гик

    WS2811 -12v
    WS2812b -5v
     
  19. priz

    priz Нуб

    DC5V/DC12V