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

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

  1. parovoZZ

    parovoZZ Гуру

    Резистор нужен. Домашнее задание: выяснить, для чего и какого номинала.
     
  2. Vavanvanvan

    Vavanvanvan Нуб

    добрый день, читал везде что резистор нужен для защиты пина, номинал от 200 до 500 оМ но в моём случае почему-то с резистором неправильно работало
     
  3. Vavanvanvan

    Vavanvanvan Нуб

    использую этот скетч:
    https://github.com/wirekraken/ESP8266-Websockets-LED
    и странно что если выставляю один цвет то все работает нормально, но когда ставлю на разные режимы, то происходит иногда странное моргание как вспышка,
     
  4. Airbus

    Airbus Радиохулиган Модератор

    Таки получилось? Рад за Вас!
     
  5. Vavanvanvan

    Vavanvanvan Нуб

    спасибо но все не идеально, иногда моргания при включении разных режимов, а при одном постоянном цвете морганий нет, это проблема с сигналом?
     
  6. Vavanvanvan

    Vavanvanvan Нуб

    резистор 50 оМ решил проблемму)))
     
  7. parovoZZ

    parovoZZ Гуру

    Когда проблемМма решена - это хорошо.
     
    Vavanvanvan нравится это.
  8. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Резистор нужен для двух целей - Защитить пин Ардуины (по принципу - береженого бог бережет), и для подавления волновых эффектов в линии. Поскольку сигнал там под 1 МГц - они вполне могут быть. Выразится это в миганиях, что вы и наблюдаете. Обычно в таких случаях ставят как раз 50 ом. Так что вы набрели на решение, хоть и методом тыка.
     
    Vavanvanvan нравится это.
  9. b707

    b707 Гуру

    ЕСП в принципе может работать с лентой неустойчиво. что с резистором что без - это связано с тем что у ЕСП лог уровень 3.3в. а ленте нужно 5в.
    Для стабильности надо ставить левелшифтер, и, если хочется, до него резистор
     
  10. parovoZZ

    parovoZZ Гуру

    для подавления эффектов в линии сопротивление линии притягивают к шине питания (как правило, к нулевой). В данном случае резистор выполняет роль балластного, что не способствует снижению волновых эффектов.
     
  11. Perepelytsia

    Perepelytsia Нуб

    нужна помощь
    Возможно кто-то с таким сталкивался
    При подключении к питанию лента 2811 горит белым цветом
    Если подсоединить контроллер то все начинает работать нормально
    Проблема в том, что при подаче питания не могу сделать плавное включение потому что сначала загорается белый цвет а затем (через пол секунды) начинает отрабатывать Скэч
    Это подсветка лестниц, состоит из 16 отдельных частей, все они почему-то горят белым если просто подать питание без сигнала
    Пробовал подключать отдельно каждую часть
    Возможно кто-то знает как сделать чтобы лента НЕ включалась без контроллера?
     
  12. parovoZZ

    parovoZZ Гуру

    бери 2812. Там нет такого эффекта.
     
  13. b707

    b707 Гуру

    подтянуть Din к GND резистором на 3-5к
     
    Ariadna-on-Line нравится это.
  14. a1000

    a1000 Гуру

    Уберите из микроконтроллера загрузчик. Скетч будет стартовать мгновенно и без задержек.
     
  15. Vavanvanvan

    Vavanvanvan Нуб

    Добрый день! решил усовершенствовать проект и подключил андроид к ЕСП8266.
    для реализации использую простой WebSocketsServer.
    Проблема заключается в том, что когда в лупе скетч обрабатывает WSS.loop(),
    постоянно выходят какие-то глюки которые как-то вроде регулируются установкой задержки, но всё не то,
    если напрямую в луп прописываю режимы и отключаю сокетсервер, то всё работает хорошо, а с сервером постоянные глюки.
    Код (C++):

    #include <FastLED.h>
    #include <ESP8266WiFi.h>
    #include <WebSocketsServer.h>

    uint8_t bright;                    // Яркость света
    String ledMode = "start";             // эффект (0 - 29)

    WebSocketsServer ws = WebSocketsServer(8080);

    void setup() {
    ......
    ws.begin();  
    ws.onEvent(WsEvent);
    void loop()
    {
      ledEffect();  //реализация эффектов при помощи
                             //String ledMode
      ws.loop();
      delay(100);

    }
    void handelWebSockets(uint8_t*data){

      if(!isDigit((int)data[0]) && (char)data[0] != '#') {    // установка режима ленты
        ledMode = String((char*)data);
      }
      else if((char)data[0] == '#'){         // получение HEX кода для колорпикера
        ledMode = String((char*)data);
      }
      else if(isDigit((int)data[0])){       // установка яркости ленты
        bright = atoi((const char*)data);
        FastLED.setBrightness(bright);
      }
    }

    void WsEvent(uint8_t num, WStype_t type, uint8_t *data, size_t len) {

      switch (type) {
        case WStype_DISCONNECTED:
          Serial.printf("WebSocket client  %u disconnected\n", num);
          break;
        case WStype_CONNECTED:
        {
          IPAddress ip = ws.remoteIP(num);
          Serial.printf("%u Connected from %d. %d\n", num, ip[0], ip[1]);
        }
          break;
        case WStype_TEXT:{
          handelWebSockets(data);
          ws.sendTXT(num, ledMode);    // send data to all connected clients
          Serial.println("ETO WS_TEXT " + ledMode);
          break;
        }
      }
    }
     
    Последнее редактирование: 29 ноя 2024 в 14:13
  16. Vavanvanvan

    Vavanvanvan Нуб

    Пробовал и
    <ESPAsyncWebServer.h>
    Код (C++):


    void setup() {
        Serial.begin(115200);
        FastLED.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, LED_COUNT).setCorrection( TypicalLEDStrip );
        ws.onEvent(WsEvent);
        server.addHandler(&ws);
        server.begin();

    }
    void loop()
    {
      ledEffect(ledMode);
      ws.cleanupClients();
    //  FastLED.delay(100);

    }
    void handelWebSockets(uint8_t*data, size_t len){

      ledMode = "";
      for(int i = 0; i < len; i++){
        ledMode += (char)data[i];
      }
      Serial.println(ledMode);
      ws.textAll(ledMode);    // send data to all connected clients
    }
    мне кажется что контроллер тратит время на обрабатывание socketserverа и тут выходят глюки в работе разных режимов WS2811,
    не знаю есть ли многопоточность в ардуино или как можно решить эту проблемму, может кто может подсказать?