Создание беспроводных гирлянд
Всем добрый день!
Собрал всю свою волшебную гирлянду на nodemcu v3 Cp2102 с лентой RGB
WS2811, которая идёт с одной микросхемой на 3 диода и питанием 12 В.
Пересмотрел все гайды по библиотекам, проверил apk-файл, скетчи...
Вайфай работает, телефон коннектится, приложение работает, а гирлянда не
запускается.
три страницы кода прилагаю и надеюсь на помощь...
вкладка раз
#include <ESP8266WiFi.h> //Содержится в пакете
#include <ESP8266WebServer.h> //Содержится в пакете
#include <WS2812FX.h>
#define LED_COUNT 59 // кол-во светодиодов в гирлянде
#define LED_PIN D4 // пин для вывода на гирлянду
WS2812FX strip = WS2812FX(LED_COUNT, LED_PIN, NEO_RGB + NEO_KHZ800);
int i = 0; // счётчик индекса в массиве эффектов
int m = 13; // кол-во эффектов, см. массив modes
int l = 0; // индекс прошлого (last) эффекта
#define DEFAULT_SPEED 3000 // задержка в мс, по дефолту 1000
#define TIMER_MS 60000 // время длительности одного эффекта в мс
int j = 25; // максимальнаяя яркость *10
boolean auto_rejim = false; // авто режим выкл.
unsigned long last_change = 0; // предыдущее значениее времени
unsigned long now = 0; //текущее значениее времени
IPAddress apIP(192, 168, 0, 101);
// Web интерфейс для устройства
ESP8266WebServer HTTP(80);
// Определяем переменные wifi
String _ssid = "home"; // Для хранения SSID
String _password = "i12345678"; // Для хранения пароля сети
String _ssidAP = "WiFi esp"; // SSID AP точки доступа
String _passwordAP = ""; // пароль точки доступа
void setup() {
Serial.begin(115200);
Serial.println("");
Serial.println("Start 1-WIFI");
//Запускаем WIFI
WIFIinit();
//Настраиваем и запускаем HTTP интерфейс
Serial.println("Start 2-WebServer");
HTTP_init();
}
void loop() {
HTTP.handleClient();
delay(1);
вкладка два
void HTTP_init(void) {
HTTP.on("/led", handle_Led); // Упровляем Led http://192.168.0.101/led?status=auto
// Запускаем HTTP сервер
HTTP.begin();
}
void handle_Led() {
int modes[] = {7,8,10,11,12,17,20,32,33,38,36,42,46}; // массив с желаемыми ID эффектов
String status = HTTP.arg("status");
if (status == "prev")
{
i++;
if (i>12)
i=0;
strip.setMode(modes[i]);
//strip.setMode(i);
String k = String(i+1);
auto_rejim = false;
HTTP.send(200, "text/plain", k);
}
if (status == "next")
{
i--;
if (i<0)
i=12;
strip.setMode(modes[i]);
String k = String(i+1);
auto_rejim = false;
HTTP.send(200, "text/plain", k);
}
if (status == "minus")
{
j--;
if (j<1)
j=1;
strip.setBrightness(j*10);
String k = String(j*10+100);
HTTP.send(200, "text/plain", k);
}
if (status == "plus")
{
j++;
if (j>25)
j=25;
strip.setBrightness(j*10);
String k = String(j*10+100);
HTTP.send(200, "text/plain", k);
}
if (status == "auto")
{
auto_rejim = true;
HTTP.send(200, "text/plain", "400");
}
if(modes[i] == 17 || modes[i] == 42 || modes[i] == 46){
strip.setSpeed(DEFAULT_SPEED*3); // очень быстрые - х3
}
else
strip.setSpeed(DEFAULT_SPEED); // вернуть скорость на дефолт
}
void Auto_Led() {
if (auto_rejim)
{
int modes[] = {7,8,10,11,12,17,20,32,33,38,36,42,46}; // массив ID эффектов
if(now - last_change > TIMER_MS) {
if(modes[i] == 17 || modes[i] == 42 || modes[i] == 46){
strip.setSpeed(DEFAULT_SPEED*3); // очень быстро х3
}
else
strip.setSpeed(DEFAULT_SPEED); // вернуть скорость на дефолт
strip.setMode(modes[i]);
last_change = now;
l = modes[i];
i++;
if(i == m)
i = 0;
}
}
}
и три
void WIFIinit() {
// Попытка подключения к точке доступа
WiFi.mode(WIFI_STA);
byte tries = 11;
WiFi.begin(_ssid.c_str(), _password.c_str());
// Делаем проверку подключения до тех пор пока счетчик tries
// не станет равен нулю или не получим подключение
while (--tries && WiFi.status() != WL_CONNECTED)
{
Serial.print(".");
delay(1000);
}
if (WiFi.status() != WL_CONNECTED)
{
// Если не удалось подключиться запускаем в режиме AP
Serial.println("");
Serial.println("WiFi up AP");
StartAPMode();
}
else {
// Иначе удалось подключиться отправляем сообщение
// о подключении и выводим адрес IP
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
}
bool StartAPMode()
{ // Отключаем WIFI
WiFi.disconnect();
// Меняем режим на режим точки доступа
WiFi.mode(WIFI_AP);
// Задаем настройки сети
WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
// Включаем WIFI в режиме точки доступа с именем и паролем
// хронящихся в переменных _ssidAP _passwordAP
WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
return true;
}
скетч проверки работоспособности ленты как выглядит?