#include #include // --- Pin definition --- #define BUTTON1 D4 #define BUTTON2 D6 #define LED1 D3 #define LED2 D5 WebServer server(80); // --- LED states --- bool led1State = false; bool led2State = false; // --- Button state tracking (for edge detection) --- int lastState1; int lastState2; // --- HTML page --- String getHTML() { int b1 = digitalRead(BUTTON1); int b2 = digitalRead(BUTTON2); bool pressed1 = (b1 == HIGH); // PCB logic bool pressed2 = (b2 == HIGH); String html = ""; html += ""; html += ""; html += ""; html += "

BENI ALVAREZ PCB Buttons & Leds

"; html += "

XIAO ESP32-C6 Control

"; // --- Button states --- html += "

Buttons

"; html += "

D4: " + String(pressed1 ? "PRESSED" : "RELEASED") + "

"; html += "

D6: " + String(pressed2 ? "PRESSED" : "RELEASED") + "

"; // --- LED control --- html += "

LED Control

"; html += "

LED D3: " + String(led1State ? "ON" : "OFF") + "

"; html += ""; html += ""; html += "

LED D5: " + String(led2State ? "ON" : "OFF") + "

"; html += ""; html += ""; html += ""; return html; } // --- Root page --- void handleRoot() { server.send(200, "text/html", getHTML()); } // --- LED routes + Serial logs --- void led1On() { led1State = true; digitalWrite(LED1, HIGH); Serial.println("LED D3 ON"); server.sendHeader("Location", "/"); server.send(303); } void led1Off() { led1State = false; digitalWrite(LED1, LOW); Serial.println("LED D3 OFF"); server.sendHeader("Location", "/"); server.send(303); } void led2On() { led2State = true; digitalWrite(LED2, HIGH); Serial.println("LED D5 ON"); server.sendHeader("Location", "/"); server.send(303); } void led2Off() { led2State = false; digitalWrite(LED2, LOW); Serial.println("LED D5 OFF"); server.sendHeader("Location", "/"); server.send(303); } void setup() { Serial.begin(115200); delay(1000); // --- Pins --- pinMode(BUTTON1, INPUT); pinMode(BUTTON2, INPUT); pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); digitalWrite(LED1, LOW); digitalWrite(LED2, LOW); // --- Initial button state --- lastState1 = digitalRead(BUTTON1); lastState2 = digitalRead(BUTTON2); // --- WiFi AP --- WiFi.softAP("XIAO_ESP32"); Serial.print("AP IP address: "); Serial.println(WiFi.softAPIP()); // --- Routes --- server.on("/", handleRoot); server.on("/led1/on", led1On); server.on("/led1/off", led1Off); server.on("/led2/on", led2On); server.on("/led2/off", led2Off); server.begin(); Serial.println("Web server started"); } void loop() { server.handleClient(); int currentState1 = digitalRead(BUTTON1); int currentState2 = digitalRead(BUTTON2); // --- Button D4 --- if (currentState1 != lastState1) { if (currentState1 == HIGH) { Serial.println("D4 PRESSED"); } else { Serial.println("D4 RELEASED"); } lastState1 = currentState1; delay(20); // debounce } // --- Button D6 --- if (currentState2 != lastState2) { if (currentState2 == HIGH) { Serial.println("D6 PRESSED"); } else { Serial.println("D6 RELEASED"); } lastState2 = currentState2; delay(20); // debounce } }