#include const char* ssid = "SusieQ"; const char* password = "xxxxyyyyzzzzz"; WiFiServer server(80); const int ledPin = 15; String ledStatus = "OFF"; unsigned long lastToggle = 0; bool ledOn = false; void setup() { Serial.begin(115200); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, HIGH); // LED off (active LOW) Serial.print("Connecting to WiFi"); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(); Serial.print("Connected! IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { String request = client.readStringUntil('\r'); client.flush(); if (request.indexOf("/on") != -1) { digitalWrite(ledPin, LOW); ledOn = true; ledStatus = "ON"; } if (request.indexOf("/off") != -1) { digitalWrite(ledPin, HIGH); ledOn = false; ledStatus = "OFF"; } if (request.indexOf("/blink") != -1) { ledStatus = "BLINK"; } String html = ""; html += ""; html += ""; html += "

ESP32-C6 LED Control

"; html += "

LED is currently: " + ledStatus + "

"; html += ""; html += ""; html += ""; html += ""; client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); client.println(html); client.stop(); } // Blink logic runs every loop pass, outside of web request handling if (ledStatus == "BLINK") { if (millis() - lastToggle >= 500) { ledOn = !ledOn; digitalWrite(ledPin, ledOn ? LOW : HIGH); lastToggle = millis(); } } }