Пишу небольшой скетч, с помощью которого дистанционно управляю адресной светодиодной лентой. Модуль подключается к роутеру, далее идет работа через IP 192, 168, 0, 100 и тут в принципе все терпимо.
Если подключится не удается, создается точка доступа. Присваивается ИП 192.168.4.1. Можно ли сделать так, что бы при создании новой точки, не нужно было вбивать IP 192.168.4.1., а допустим адрес led.ru.
P.S Почему сбилась кодировка? Сегодня зашел и ахнул? Arduino IDE.
P.S.S Реально ли реализовать здесь SSDP
P.S.S.S Как реализовать отправку логина и пароля на модуль, для последующего подключения к существующей сети.
Если подключится не удается, создается точка доступа. Присваивается ИП 192.168.4.1. Можно ли сделать так, что бы при создании новой точки, не нужно было вбивать IP 192.168.4.1., а допустим адрес led.ru.
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
IPAddress apIP(192, 168, 4, 1);
MDNSResponder mdns;
// Определяем переменные
String _ssid = "tplink"; // Для хранения SSID
String _password = "Dkh123456"; // Для хранения пароля сети
String _ssidAP = "LedLamp"; // SSID AP точки доступа
String _passwordAP = "55556666"; // пароль точки доступа
ESP8266WebServer server(80);
String webPage = "";
#include "FastLED.h" // библиотека для работы с лентой
#define LED_COUNT 13 // число светодиодов в кольце/ленте
#define LED_DT 0 // пин, куда подключен DIN ленты
int max_bright = 220; // максимальная яркость (0 - 255)
int ledMode = 1;
int regim = 0;
Стартовый режим
0 - все выключены
1 - все включены
3 - кольцевая радуга
888 - демо-режим
// цвета мячиков для режима
byte ballColors[3][3] = {
{0xff, 0, 0},
{0xff, 0xff, 0xff},
{0 , 0 , 0xff}
};
int BOTTOM_INDEX = 0; // светодиод начала отсчёта
int TOP_INDEX = int(LED_COUNT / 2);
int EVENODD = LED_COUNT % 2;
struct CRGB leds[LED_COUNT];
int ledsX[LED_COUNT][3]; //-ARRAY FOR COPYING WHATS IN THE LED STRIP CURRENTLY (FOR CELL-AUTOMATA, MARCH, ETC)
int thisdelay = 20; //-FX LOOPS DELAY VAR
int thisstep = 10; //-FX LOOPS DELAY VAR
int thishue = 0; //-FX LOOPS DELAY VAR
int thissat = 255; //-FX LOOPS DELAY VAR
int thisindex = 0;
int thisRED = 0;
int thisGRN = 0;
int thisBLU = 0;
int idex = 0; //-LED INDEX (0 to LED_COUNT-1
int ihue = 0; //-HUE (0-255)
int ibright = 0; //-BRIGHTNESS (0-255)
int isat = 0; //-SATURATION (0-255)
int bouncedirection = 0; //-SWITCH FOR COLOR BOUNCE (0-1)
float tcount = 0.0; //-INC VAR FOR SIN LOOPS
int lcount = 0; //-ANOTHER COUNTING VAR
// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
void setup()
{
delay(1000);
webPage += "<meta charset=\"utf-8\"> <style type=\"text/css\"> button {display: inline-block; color: white; text-decoration: none; padding: .5em 2em; outline: none; border-width: 2px 0; border-style: solid none; border-radius: 6px; background: linear-gradient(#69A7FD, #0F71F7) #E38916; transition: 0.2s;}button:hover { background: linear-gradient(#69A7FD, #356EBD) #f5ae00; }button:active { background: linear-gradient(#F0FF60, #f5ae00) #B5C42D; } p {margin-left: 30} body { background-color: #B0D1FD; margin: 0; font-size: 150%;} #hed { border-radius: 7px; background: #0649A7; color: #FFFFFF; height: 80;} #hed H3 { color: #FFFFFF; margin: 20; padding-top: 25px;} </style><body><p><h2> </h2></p><div id=\"hed\"><h3>Панель управления</h3></div><p>Режим освещения <a href=\"LED0On\"><button>ON</button></a> <a href=\"LED0Off\"><button>OFF</button></a>";
webPage += "<p> <a href=\"id2\"><button>Плавная смена цветов</button></a>  <a href=\"id3\"><button>Радуга цветов</button></a></p>";
webPage += "<p> <a href=\"id4\"><button>Случайная смена</button>
delay(1000);
Serial.begin(9600);
Serial.println("start wifi connect");
/////
WIFIinit();
//Настраиваем и запускаем SSDP интерфейс
Serial.println("Start 3-SSDP");
/////
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", webPage);
});
////////////////////
server.on("/LED0On", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 3);
Serial.println(3);
regim = 106;
delay(1000);
});
server.on("/LED0Off", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 0);
Serial.println(0);
regim = 0;
delay(1000);
});
//////////////// конец работа с кнопкой
//////////////// работа с кнопкой
server.on("/id2", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 2);
regim = 2;
Serial.println(regim);
delay(1000);
});
server.on("/id3", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 3);
regim = 3;
Serial.println(regim);
delay(1000);
});
//////////////// конец работа с кнопкой plavno
server.begin();
Serial.println("HTTP server started");
LEDS.setBrightness(max_bright); // ограничить максимальную яркость
LEDS.addLeds<WS2811, LED_DT, GRB>(leds, LED_COUNT); // настрйоки для нашей ленты (ленты на WS2811, WS2812, WS2812B)
one_color_all(0, 0, 0); // погасить все светодиоды
LEDS.show(); // отослать команду
}
void loop() {
server.handleClient();
// if (Serial.available() > 0) { // если что то прислали
ledMode = regim; // парсим в тип данных int
change_mode(ledMode); // меняем режим через change_mode (там для каждого режима стоят цвета и задержки)
//}
switch (ledMode) {
case 999: break; // пазуа
case 2: rainbow_fade(); break; // плавная смена цветов всей ленты
case 3: rainbow_loop(); break; // крутящаяся радуга
case 4: random_burst(); break; // случайная смена цветов
case 5: color_bounce(); break; // бегающий светодиод
case 888: demo_modeA(); break; // длинное демо
case 889: demo_modeB(); break; // короткое демо
}
}
void change_mode(int newmode) {
server.handleClient();
thissat = 255;
switch (newmode) {
case 0: one_color_all(0, 0, 0); LEDS.show(); break; //---ALL OFF
case 1: one_color_all(255, 255, 255); LEDS.show(); break; //---ALL ON
case 2: thisdelay = 20; break; //---STRIP RAINBOW FADE
case 3: thisdelay = 20; thisstep = 10; break; //---RAINBOW LOOP
case 4: thisdelay = 20; break; //---RANDOM BURST
case 5: thisdelay = 20; thishue = 0; break; //---CYLON v1
}
bouncedirection = 0;
one_color_all(0, 0, 0);
ledMode = newmode;
}
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
IPAddress apIP(192, 168, 4, 1);
MDNSResponder mdns;
// Определяем переменные
String _ssid = "tplink"; // Для хранения SSID
String _password = "Dkh123456"; // Для хранения пароля сети
String _ssidAP = "LedLamp"; // SSID AP точки доступа
String _passwordAP = "55556666"; // пароль точки доступа
ESP8266WebServer server(80);
String webPage = "";
#include "FastLED.h" // библиотека для работы с лентой
#define LED_COUNT 13 // число светодиодов в кольце/ленте
#define LED_DT 0 // пин, куда подключен DIN ленты
int max_bright = 220; // максимальная яркость (0 - 255)
int ledMode = 1;
int regim = 0;
Стартовый режим
0 - все выключены
1 - все включены
3 - кольцевая радуга
888 - демо-режим
// цвета мячиков для режима
byte ballColors[3][3] = {
{0xff, 0, 0},
{0xff, 0xff, 0xff},
{0 , 0 , 0xff}
};
int BOTTOM_INDEX = 0; // светодиод начала отсчёта
int TOP_INDEX = int(LED_COUNT / 2);
int EVENODD = LED_COUNT % 2;
struct CRGB leds[LED_COUNT];
int ledsX[LED_COUNT][3]; //-ARRAY FOR COPYING WHATS IN THE LED STRIP CURRENTLY (FOR CELL-AUTOMATA, MARCH, ETC)
int thisdelay = 20; //-FX LOOPS DELAY VAR
int thisstep = 10; //-FX LOOPS DELAY VAR
int thishue = 0; //-FX LOOPS DELAY VAR
int thissat = 255; //-FX LOOPS DELAY VAR
int thisindex = 0;
int thisRED = 0;
int thisGRN = 0;
int thisBLU = 0;
int idex = 0; //-LED INDEX (0 to LED_COUNT-1
int ihue = 0; //-HUE (0-255)
int ibright = 0; //-BRIGHTNESS (0-255)
int isat = 0; //-SATURATION (0-255)
int bouncedirection = 0; //-SWITCH FOR COLOR BOUNCE (0-1)
float tcount = 0.0; //-INC VAR FOR SIN LOOPS
int lcount = 0; //-ANOTHER COUNTING VAR
// ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
void setup()
{
delay(1000);
webPage += "<meta charset=\"utf-8\"> <style type=\"text/css\"> button {display: inline-block; color: white; text-decoration: none; padding: .5em 2em; outline: none; border-width: 2px 0; border-style: solid none; border-radius: 6px; background: linear-gradient(#69A7FD, #0F71F7) #E38916; transition: 0.2s;}button:hover { background: linear-gradient(#69A7FD, #356EBD) #f5ae00; }button:active { background: linear-gradient(#F0FF60, #f5ae00) #B5C42D; } p {margin-left: 30} body { background-color: #B0D1FD; margin: 0; font-size: 150%;} #hed { border-radius: 7px; background: #0649A7; color: #FFFFFF; height: 80;} #hed H3 { color: #FFFFFF; margin: 20; padding-top: 25px;} </style><body><p><h2> </h2></p><div id=\"hed\"><h3>Панель управления</h3></div><p>Режим освещения <a href=\"LED0On\"><button>ON</button></a> <a href=\"LED0Off\"><button>OFF</button></a>";
webPage += "<p> <a href=\"id2\"><button>Плавная смена цветов</button></a>  <a href=\"id3\"><button>Радуга цветов</button></a></p>";
webPage += "<p> <a href=\"id4\"><button>Случайная смена</button>
delay(1000);
Serial.begin(9600);
Serial.println("start wifi connect");
/////
WIFIinit();
//Настраиваем и запускаем SSDP интерфейс
Serial.println("Start 3-SSDP");
/////
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", webPage);
});
////////////////////
server.on("/LED0On", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 3);
Serial.println(3);
regim = 106;
delay(1000);
});
server.on("/LED0Off", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 0);
Serial.println(0);
regim = 0;
delay(1000);
});
//////////////// конец работа с кнопкой
//////////////// работа с кнопкой
server.on("/id2", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 2);
regim = 2;
Serial.println(regim);
delay(1000);
});
server.on("/id3", [](){
server.send(200, "text/html", webPage);
digitalWrite(ledMode, 3);
regim = 3;
Serial.println(regim);
delay(1000);
});
//////////////// конец работа с кнопкой plavno
server.begin();
Serial.println("HTTP server started");
LEDS.setBrightness(max_bright); // ограничить максимальную яркость
LEDS.addLeds<WS2811, LED_DT, GRB>(leds, LED_COUNT); // настрйоки для нашей ленты (ленты на WS2811, WS2812, WS2812B)
one_color_all(0, 0, 0); // погасить все светодиоды
LEDS.show(); // отослать команду
}
void loop() {
server.handleClient();
// if (Serial.available() > 0) { // если что то прислали
ledMode = regim; // парсим в тип данных int
change_mode(ledMode); // меняем режим через change_mode (там для каждого режима стоят цвета и задержки)
//}
switch (ledMode) {
case 999: break; // пазуа
case 2: rainbow_fade(); break; // плавная смена цветов всей ленты
case 3: rainbow_loop(); break; // крутящаяся радуга
case 4: random_burst(); break; // случайная смена цветов
case 5: color_bounce(); break; // бегающий светодиод
case 888: demo_modeA(); break; // длинное демо
case 889: demo_modeB(); break; // короткое демо
}
}
void change_mode(int newmode) {
server.handleClient();
thissat = 255;
switch (newmode) {
case 0: one_color_all(0, 0, 0); LEDS.show(); break; //---ALL OFF
case 1: one_color_all(255, 255, 255); LEDS.show(); break; //---ALL ON
case 2: thisdelay = 20; break; //---STRIP RAINBOW FADE
case 3: thisdelay = 20; thisstep = 10; break; //---RAINBOW LOOP
case 4: thisdelay = 20; break; //---RANDOM BURST
case 5: thisdelay = 20; thishue = 0; break; //---CYLON v1
}
bouncedirection = 0;
one_color_all(0, 0, 0);
ledMode = newmode;
}
P.S Почему сбилась кодировка? Сегодня зашел и ахнул? Arduino IDE.
P.S.S Реально ли реализовать здесь SSDP
P.S.S.S Как реализовать отправку логина и пароля на модуль, для последующего подключения к существующей сети.