/*
Programa: Servidor Web Servidor Web que controla cor de LED RGB
Autor: André Luis Marques da Silveira
Data: 22/09/2019
*/
#include <ESP8266WiFi.h>
const char* ssid = "NOME DO SERVIDOR";
const char* password = "SENHA DO SERVIDOR";
int PinoLedRed = D3; // Pino do Led vermelho
int PinoLedGreen = D2; // Pino do Led verde
int PinoLedBlue = D1; // Pino do Led azul
int StatusRed = 0;
int StatusGreen = 0;
int StatusBlue = 0;
WiFiServer server(80);
void setup() {
Serial.begin(9600);
Serial.print("Conectando a ");
Serial.println(ssid);
pinMode(PinoLedRed, OUTPUT);
pinMode(PinoLedGreen, OUTPUT);
pinMode(PinoLedBlue, OUTPUT);
analogWrite(PinoLedRed, 0);
analogWrite(PinoLedGreen, 0);
analogWrite(PinoLedBlue, 0);
int a = 0;
WiFi.begin(ssid, password); // Informa nome servidor e senha para acessar Rede
while (WiFi.status() != WL_CONNECTED) { // Testa status da conexão
a = a + 1;
if (a < 60) {
Serial.print(".");
} else {
Serial.println(".");
a = 0;
}
delay(10);
}
Serial.println("");
Serial.println("Conectado a rede");
Serial.println("");
Serial.println("Servidor iniciado");
// ---- Inicia Servidor Web para receber dados em "WiFiServer server(porta)" ---- //
server.begin();
// ---- Escreve na serial o IP recebido da rede sem fio (AUTOMÁTICO) ---- //
Serial.print("IP para se conectar ao NodeMCU: ");
Serial.print("http://");
Serial.println(WiFi.localIP());
}
void loop() {
// ---- Verifica se algum cliente está conectado ao servidor ---- //
WiFiClient client = server.available();
if (!client) {
delay(1);
return;
}
// ---- Enquanto cliente estiver conectado aguarda 1 milisegundo ---- //
while(!client.available()){
delay(1);
}
// ---- Le primeira linha do pedido ---- //
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
// ---- Processa pedido do LED VERMELHO ---- //
if (request.indexOf("/LedRed=ON") != -1) {
Serial.println("LedRed=on");
StatusRed = 255;
}
if (request.indexOf("/LedRed=OFF") != -1) {
Serial.println("LedRed=off");
StatusRed = 0;
}
// ---- Processa pedido do LED VERDE ---- //
if (request.indexOf("/LedGreen=ON") != -1) {
Serial.println("LedGreen=on");
StatusGreen = 255;
}
if (request.indexOf("/LedGreen=OFF") != -1) {
Serial.println("PinoLedGreen=off");
StatusGreen = 0;
}
// ---- Processa pedido do LED AZUL ---- //
if (request.indexOf("/LedBlue=ON") != -1) {
Serial.println("LedBlue=on");
StatusBlue = 255;
}
if (request.indexOf("/LedBlue=OFF") != -1) {
Serial.println("LedBlue=off");
StatusBlue = 0;
}
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<HEAD>");
client.println("<TITLE>Controla LED RGB pela WEB</TITLE>");
client.println("<META http-equiv=Content-Type content='text/html; charset=iso-8859-1'>");
client.println("</HEAD>");
client.println("<body>");
client.println("<center>");
client.println("<h1>Olá cliente!</h1>");
client.println("<p>Seja bem vindo!</p>");
client.print("<p><br>Estado dos LEDs: ");
if (StatusRed == 255) {
client.print("vermelho On / ");
analogWrite(PinoLedRed, 255);
} else {
client.print("vermelho Off / ");
analogWrite(PinoLedRed, 0);
}
if (StatusGreen == 255) {
client.print("verde On / ");
analogWrite(PinoLedGreen, 255);
} else {
client.print("verde Off / ");
analogWrite(PinoLedGreen, 0);
}
if (StatusBlue == 255) {
client.print("azul On<br></p>");
analogWrite(PinoLedBlue, 255);
} else {
client.print("azul Off</p>");
analogWrite(PinoLedBlue, 0);
}
client.println("<p><br>Pino D3 - Vermelho ");
client.println("<a href=\"/LedRed=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedRed=OFF\"\"><button>Off</button></a></p>");
client.println("<p>Pino D2 - Verde ");
client.println("<a href=\"/LedGreen=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedGreen=OFF\"\"><button>Off</button></a></p>");
client.println("<p>Pino D1 - Azul ");
client.println("<a href=\"/LedBlue=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedBlue=OFF\"\"><button>Off</button></a></p>");
client.println("</center>");
client.println("</html>");
Serial.println("Cliente desconectado");
Serial.println("");
}
|