• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

wemos d1 mini не включает с ws2812

medved1977

New member
Попробовал я ваш скетч, он рабочий.
Работает на двух скоростях.
Я, для проверки подключил ленту ( у меня 1 метр ленты WS2812В ) к 3,3В и к 13 ноге есп12е, стабилизатор AMS 117 на 3,3В выдержал, но грелся сильно.
Возле самой ленты стоит резистор на 1,2 кОм между +5в и DIn.
В скетч добавил вывод в сериал, теперь точно видно, что есп стартует.
Код:
#define Led_PIN  13// пин DIn

#define NUM_LEDS 56// число диодов
#include "Adafruit_NeoPixel.h"

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, Led_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("Start.");
  strip.begin();
  strip.setBrightness(200);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop()
{
  // заливаем белым
strip.setBrightness(250); 
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFF0000);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем красным
  for (int i = 0; i < NUM_LEDS; i++ ) {
    strip.setBrightness(200);    // всю ленту
    strip.setPixelColor(i, 0x00FF00);     // залить красным
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем синим
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x0000FF);
    strip.setBrightness(200); // залить синим
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем зеленым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFFFF00);     // залить зеленым
    strip.show();       
    strip.setBrightness(200); // отправить на ленту
    delay(10);
  }
}

Ну и подключенная библиотека.
Посмотреть вложение 9629

Кстати, корпуса ленты и есп соединили?
подключил все еще раз, залил скетч, открыл монитор порта и ничего. выводится одна строка, время :141->s?
при нажатии кнопки ресет на плате выводится какая-=то абракадабра, изменить кодировку не получилось. я так подозреваю, что просто плата мертвая, но почему тогда скетч в нее свободно загружается
 

CodeNameHawk

Moderator
Команда форума
при нажатии кнопки ресет на плате выводится какая-=то абракадабра,
Так и должно быть в начале. Посмотрите, что видно на скорости 74800 (HTERM программой). Скорость порта 115200 установили?
Покажите скриншот заливки прошивки и монитора порта.
 

medved1977

New member
еще раз прошу прощения, но я немного далек от этих терминологий и умных слов. мне нужно рассказать как для чайника. я покопался и вот что у меня получилось.у меня есть arduino nano на ней все скетчи и подключенная матрица работает. плату wemos не смог протестировать, но вместо нее взял nodeMCU это то же самое что и wemos
так вот в скетч я добавил вывод чтения пина и вывод в монитор порта. скетч ниже

Код:
#define Led_PIN  5// пин DIn

#define NUM_LEDS 56// число диодов
#include "Adafruit_NeoPixel.h"

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, Led_PIN, NEO_GRB + NEO_KHZ800);
void setup()
{
  Serial.begin(115200);
  Serial.println();
  Serial.println("start");

  strip.begin();
  strip.setBrightness(200);    // яркость, от 0 до 255
  strip.clear();                          // очистить
  strip.show();                           // отправить на ленту
}
void loop()
{
  // заливаем белым
strip.setBrightness(250);
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFF0000);     // залить белым
    strip.show();                         // отправить на ленту
    delay(10);





  Serial.begin(115200);
  Serial.println();
  Serial.println("Start");
  Serial.println(digitalRead(Led_PIN));



 
  }
   delay(1000);
  // заливаем красным
  for (int i = 0; i < NUM_LEDS; i++ ) {
    strip.setBrightness(200);    // всю ленту
    strip.setPixelColor(i, 0x00FF00);     // залить красным
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем синим
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0x0000FF);
    strip.setBrightness(200); // залить синим
    strip.show();                         // отправить на ленту
    delay(10);
  }
   delay(1000);
  // заливаем зеленым
  for (int i = 0; i < NUM_LEDS; i++ ) {   // всю ленту
    strip.setPixelColor(i, 0xFFFF00);     // залить зеленым
    strip.show();       
    strip.setBrightness(200); // отправить на ленту
    delay(10);
  }
}

далее я сделал скриншоты монитора порта nano и nodeMCU , а так же есть сделал скриншот с программы Hterm. У меня конечно выводится абракадабра, но цифры везде одинаковые. единственное что я не нашел это скорость 74800 в программе.
на данный момент у меня две платы на работе, вот пробую что-то сделать но не выходит.
P.S.
дома проверял, на nano матрица работает, на wemos и nodeMCU матрица не работает, хотя скетчи в них заливаются без ошибок, программы HELLOWORD выводятся в монитор порта. если подключить простые светодиоды и залить скетч мигания, то диод моргает. но вот с ws2812 wemos и nodeMCU не хотят работать. библиотеки все подключеныhterm-esp8266.jpghterm-nano.jpgзаливка  esp8266.jpgмонитор порта esp8266.pngмонитор порта nano.jpg
 

CodeNameHawk

Moderator
Команда форума
Serial.begin(115200); Serial.println(); Serial.println("Start"); Serial.println(digitalRead(Led_PIN));
В loop замените эти строки на
Код:
//Serial.begin(115200); //vtoroj raz delat begin ne nado

Serial.println();

Serial.println("nahozhus v loop");

Serial.print("Sostojanie vyvoda Led_PIN - ");

Serial.println(digitalRead(Led_PIN));
Похоже, что резистор на ленту вы не припаяли или так что то замыкает вывод на корпус.
Где схема, где фото?
 

medved1977

New member
заменил строки в коде, в монитор порта выдается следующая информация
15:22:03.498 ->
15:22:03.498 -> nahozhus v loop
15:22:03.498 -> Sostojanie vyvoda Led_PIN - 0
15:22:03.498 ->
15:22:03.498 -> nahozhus v loop
15:22:03.498 -> Sostojanie vyvoda Led_PIN - 0
15:22:03.498 ->
15:22:03.498 -> nahozhus v loop
15:22:03.498 -> Sostojanie vyvoda Led_PIN - 0
,такая же информация идет и с рабочей платы nano
что касается схемы подключения, то я не припаивал резистор. лента WS2812 у меня подключена тремя проводами к самой плате, "+", "-", "IN" лента питается от платы, плата подключена к блоку питания. просадки напряжения нет, замерял на первом и последнем пикселе. лента не работает. пробовал подключить один пиксель ленты, не работает. с arduino nano таких проблем нет. такое подключение , тот же блок питания и матрица на 256 светодиодов, работает на 100%
 

medved1977

New member
что касается резистора, то как понять следующее
Возле самой ленты стоит резистор на 1,2 кОм между +5в и DIn.
что это за подключение??? я первый раз про такое слышу. можно по подробнее?
если резистор ставится между выходом arduino и входом ленты на Din то лента не работает ни с резистором, ни без него. а вот с arduino nano? все равно, есть резистор или нет, лента работает.
 

medved1977

New member
схема во вложении. на схеме указано сопротивление. но от него толку нет
eb9c73d2-cd06-426f-8588-8e7627c52d9b.jpg
 

CodeNameHawk

Moderator
Команда форума
Попробуйте так, но нужен блок питания на 3.3 В или преобразователь.
Untitled.png
И в скетче посмотрите D2 это вроде GPIO4.
 

medved1977

New member
интересное решение по поводу установки резистора. попробую, что касается питания на 3,3В, то тут большие сомнения, сама лента питается от 5 вольт, а не от 3.3. просто что бы запитать ленту от 3.3В то какой же БП нужен, на сколько ампер. или такое питание идет только на первый светодиод, а остальные питаются от 5В?
если так то вопрос, а почему другая матрица работает по самой простой схемы и все 256 светиков питаются через USB на плате контроллера?
 

CodeNameHawk

Moderator
Команда форума
интересное решение по поводу установки резистора.
Резистор так включают(возле самой ленты) для того, что бы был более крутой фронт импульсов на цифровом входе.
что касается питания на 3,3В, то тут большие сомнения, сама лента питается от 5 вольт, а не от 3.3.
Лента и должна питаться от 5 вольт, но если будет работать от 3.3 вольт, то при питании от 5в, останется только правильно согласовать уровни
если так то вопрос, а почему другая матрица работает по самой простой схемы и все 256 светиков питаются через USB на плате контроллера?
Другие ардуино платы и процессоры в них питаются напрямую от 5в.
 
Последнее редактирование:

medved1977

New member
хочу вернуться к данной проблеме. я перепробовал несколько вариантов согласования логических уровней. ничего не работает.последний мой эксперимент был следующий. 4 светодиода ws2812 были подключены через резистор к ноге D5 (маркировка на плате wemos) питание светодиодов были подключены к самой плате wemoc на 5в и GND само питание я подавал через usb порт на компьютере. в скетче указал PIN D5 промерил напряжение на выводе 5в - там присутствует 4,99в, на выводе 3,3в - присутствует 3,2в. прошелся тестером (осциллографа нету)по другим выводам wemos? на них нет никакого напряжение, везде показывает 0В.
скажу сразу, что у меня есть готовый проект на данных светодиодах и на wemos. подключение и прошивка делалась на одном компе и одинаково в обоих случаях. только в первом случае все работает, а во втором нет. купил новую плату wemos (думал я сжег саму плату) и все равно результата нет.
великие ГУРУ, подскажите куда двигаться далее???
 
Сверху Снизу