Привет, сильно не пинайте, новенький . Arduino mega на борту с wi-fi на esp8266.
Залил простой скетч сервака с кнопками включения и выключения диода на 13 пину, думал что дам ладу, но не могу, а очень надо. Помогайте )
Не могу понять, как реализовать автоматическое включение светодиода по событию коннекта с wi-fi точкой доступа и при потери сигнала точки доступа- отключение светодиода.#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
// впишите сюда данные, соответствующие вашей сети:
const char* ssid = "Test";
const char* password = "12345678";
ESP8266WebServer server(80);
MDNSResponder mdns;
String webPage = "";
int led_pin = 13;
void setup(void){
// подготовка:
pinMode(led_pin, OUTPUT);
digitalWrite(led_pin, LOW);
Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
// информация о контроллере
Serial.println("");
Serial.println("ESP8266 board info:");
Serial.print("\tChip ID: ");
Serial.println(ESP.getFlashChipId());
Serial.print("\tCore Version: ");
Serial.println(ESP.getCoreVersion());
Serial.print("\tChip Real Size: ");
Serial.println(ESP.getFlashChipRealSize());
Serial.print("\tChip Flash Size: ");
Serial.println(ESP.getFlashChipSize());
Serial.print("\tChip Flash Speed: ");
Serial.println(ESP.getFlashChipSpeed());
Serial.print("\tChip Speed: ");
Serial.println(ESP.getCpuFreqMHz());
Serial.print("\tChip Mode: ");
Serial.println(ESP.getFlashChipMode());
Serial.print("\tSketch Size: ");
Serial.println(ESP.getSketchSize());
Serial.print("\tSketch Free Space: ");
Serial.println(ESP.getFreeSketchSpace());
// тело веб-страницы
webPage += "<h1>ESP8266 Web Server</h1>";
webPage += "<p>Chip ID: ";
webPage += ESP.getFlashChipId();
webPage += "</p>";
webPage += "<p>Core Version: ";
webPage += ESP.getCoreVersion();
webPage += "</p>";
webPage += "<p>Chip Real Size: ";
webPage += ESP.getFlashChipRealSize()/1024;
webPage += " Kbit</p>";
webPage += "<p>Chip Size: ";
webPage += ESP.getFlashChipSize()/1024;
webPage += " Kbit</p>";
webPage += "<p>Chip Flash Speed: ";
webPage += ESP.getFlashChipSpeed()/1000000;
webPage += " MHz</p>";
webPage += "<p>Chip Work Speed: ";
webPage += ESP.getCpuFreqMHz();
webPage += " MHz</p>";
webPage += "<p>Chip Mode: ";
webPage += ESP.getFlashChipMode();
webPage += "</p>";
webPage += "<p>LED state <a href=\"LedON\"><button>ON</button></a> <a href=\"LedOFF\"><button>OFF</button></a></p>";
// подключение к WiFi
WiFi.begin(ssid, password);
Serial.println("");
// ожидание соединения:
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to "); // "Подключились к "
Serial.println(ssid);
Serial.print("IP address: "); // "IP-адрес: "
Serial.println(WiFi.localIP());
// Проверка запуска MDNS
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", [](){
server.send(200, "text/html", webPage);
});
server.on("/LedON", [](){
server.send(200, "text/html", webPage);
digitalWrite(led_pin, HIGH);
Serial.println("[ON]");
delay(1000);
});
server.on("/LedOFF", [](){
server.send(200, "text/html", webPage);
digitalWrite(led_pin, LOW);
Serial.println("[OFF]");
delay(1000);
});
server.begin();
Serial.println("HTTP server started");
}
void loop(void){
server.handleClient();
}
/////////////////////
#include <MemoryFree.h>
#include <EEPROM.h>
#define PIN_LED 13 // вывод светодиода
String inString;
// Настройка
void setup() {
// Инициализация портов и выходов
Serial.begin(115200);
Serial3.begin(115200);
pinMode(PIN_LED, OUTPUT);
digitalWrite(PIN_LED, LOW);
}
// Выполнение
void loop() {
}
// Проверка события на порту Serial3
void serialEvent3() {
while (Serial3.available()) {
// Чтение данных из порта Serial3
char inChar = Serial3.read();
// Вывод прочитанных данных в порт Serial
Serial.write(inChar);
// Поиск команды в полученных данных (команда должна быть в квадратных скобках)
inString += inChar;
if (inChar == ']') {
if (inString.indexOf("[ON]")>0) {
digitalWrite(PIN_LED, HIGH);
}
else if (inString.indexOf("[OFF]")>0) {
digitalWrite(PIN_LED, LOW);
}
else
{
Serial.println("Wrong command");
}
inString = "";
}
}
}