Assista ao vídeo e veja como modificar o estado de um led conectado ao ESP32 por meio da conexão Wifi.
Código utilizado no vídeo
unsigned long currentTime = millis();
unsigned long previousTime = 0;
const long timeoutTime = 2000;
void setup() {
Serial.begin(115200);
pinMode(LED, OUTPUT);
ledcSetup (canal, freq, resolucao);
ledcAttachPin(LED, canal);
// Iniciam a conexão WiFI
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// Imprime o endereço de IP no Serial Monitor
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
server.begin();
}
void loop(){
WiFiClient client = server.available();
if (client) { // Quando um novo cliente acessa a página
currentTime = millis();
previousTime = currentTime;
Serial.println("Novo Cliente.");
String currentLine = "";
while (client.connected() && currentTime - previousTime <= timeoutTime) {
currentTime = millis();
if (client.available()) {
char c = client.read();
Serial.write(c);
header += c;
if (c == '\n') {
if (currentLine.length() == 0) {
client.println("HTTP/1.1 200 OK");
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
//Comandos
if (header.indexOf("GET /LED/on") >= 0) {
Serial.println("LED ligado");
botaoled = "on";
ledcWrite (canal, 256);
}
else if (header.indexOf("GET /LED/off") >= 0) {
Serial.println("LED desligado");
botaoled = "off";
ledcWrite (canal, 0);
}
else if (header.indexOf("GET /pwm/up") >= 0) {
Serial.println("PWM ligado");
botaopwm = "on";
for (i = 0; i < 256; i++)
{
ledcWrite (canal, i);
delay(10);
}
} else if (header.indexOf("GET /pwm/down") >= 0) {
Serial.println("PWM desligado");
botaopwm = "off";
for (i = 256; i >= 0; i--)
{
ledcWrite (canal, i);
delay(10);
}
}
// Display HTML
client.println("<!DOCTYPE html><html>");
client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
client.println("<link rel=\"icon\" href=\"data:,\">");
//Botão on e off
client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
client.println(".button { background-color: #4CAF50; border: none; color: white; padding: 16px 40px;");
client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
client.println(".button2 {background-color: #555555;}</style></head>");
// Título da pagina
client.println("<body><h1>ESP32 Web Server</h1>");
// Botão ON/OFF do LED
client.println("<p>LED </p>");
if (botaoled =="off") {
client.println("<p><a href=\"/LED/on\"><button class=\"button\">ON</button></a></p>");
} else {
client.println("<p><a href=\"/LED/off\"><button class=\"button button2\">OFF</button></a></p>");
}
// Botão UP/DOWN PWM
client.println("<p>PWM Variavel</p>");
if (botaopwm =="off") {
client.println("<p><a href=\"/pwm/up\"><button class=\"button\">UP</button></a></p>");
} else {
client.println("<p><a href=\"/pwm/down\"><button class=\"button button2\">DOWN</button></a></p>");
}
client.println("</body></html>");
client.println();
break;
} else { // Se recebeu uma nova linha, limpe a currentLine
currentLine = "";
}
} else if (c != '\r') { // Se tiver mais alguma informação que não seja variavel de retorno
currentLine += c; // Ela será adicionada ao final da linha
}
}
}
// Limpa a variável
header = "";
// Interrompe a conexão cliente
client.stop();
Serial.println("Cliente desconectado.");
Serial.println("");
}
}