#include "WiFi.h" #include const int pinCero = 0; const int pinDos = 2; WiFiManager wm; String ipActual = "ninguna"; unsigned long tiempoPulsado = 0; bool botonCeroPulsado = false; bool estadoLedDos = LOW; unsigned long tiempoRetardo = 0; void setupWM() { pinMode(pinCero, INPUT); pinMode(pinDos, OUTPUT); digitalWrite(pinDos, LOW); // conectando Serial.println(); Serial.println(WiFi.getHostname()); digitalWrite(pinDos, HIGH); mostrarOled("SSID", WiFi.getHostname(), "Portal Cautivo", "192.168.4.1"); if (wm.autoConnect(WiFi.getHostname(), "")) { IPAddress ip = WiFi.localIP(); ipActual = ip.toString(); mostrarOled("IP: " + ipActual); digitalWrite(pinDos, LOW); } else { Serial.println("Ha fallado la conexión"); } } void loopWM() { if (digitalRead(pinCero) == LOW) { if (!botonCeroPulsado) { tiempoPulsado = millis(); botonCeroPulsado = true; Serial.println("Boton boot pulsado"); mostrarOled("Boton 0 pulsado", "", "", ""); } int segundos = (millis() - tiempoPulsado) / 1000; mostrarOled("Boton 0 pulsado", "Tiempo: " + String(segundos) + " s", "Restante: " + String(3 - segundos) + " s"); // Si el botón ha sido presionado por menos de 3 segundos, parpadea el LED if (millis() - tiempoPulsado < 3000) { if (millis() - tiempoRetardo >= 200) { // Parpadea cada 500 ms estadoLedDos = !estadoLedDos; digitalWrite(pinDos, estadoLedDos); tiempoRetardo = millis(); } } else { // Si el botón ha sido presionado por más de 3 segundos, mantén el LED encendido digitalWrite(pinDos, HIGH); mostrarOled("", "Reseteando WiFi...", "", ""); wm.resetSettings(); // borra los datos de la memoria interna (SSID y contraseña) ESP.restart(); } } else { if (botonCeroPulsado) { digitalWrite(pinDos, LOW); botonCeroPulsado = false; mostrarOled("IP: " + ipActual); } } }