ESP32 WIFI BUTTON CONTROL OUTPUT

Hardware Connection Diagram

ESP32 PinComponentConnection
3.3VLED+ (via 220Ω)Anode of LED
GPIO2LED-Cathode to resistor
GPIO0ButtonOne side to GPIO0, other to GND
GNDButtonCommon ground

Arduino IDE Code

#include <WiFi.h>

const char* ssid = "YOUR_SSID";
const char* password = "YOUR_PASSWORD";
const int ledPin = 2;    // LED control pin
const int buttonPin = 0; // Button input pin

WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  pinMode(ledPin, OUTPUT);
  pinMode(buttonPin, INPUT_PULLUP); // Enable internal pull-up

  // WiFi connection with status feedback
  WiFi.begin(ssid, password);
  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nConnected! IP: " + WiFi.localIP().toString());
  
  server.begin();
}

void loop() {
  // Handle HTTP requests
  WiFiClient client = server.available();
  if (client) {
    String req = client.readStringUntil('\r');
    client.println("HTTP/1.1 200 OK");
    client.println("Content-Type: text/plain");
    client.println();
    
    // Remote control commands
    if (req.indexOf("/ON") != -1) digitalWrite(ledPin, HIGH);
    if (req.indexOf("/OFF") != -1) digitalWrite(ledPin, LOW);
    
    client.print("LED status: ");
    client.println(digitalRead(ledPin) == HIGH ? "ON" : "OFF");
    client.stop();
  }

  // Local button control with debounce
  if (digitalRead(buttonPin) == LOW) {
    digitalWrite(ledPin, !digitalRead(ledPin)); // Toggle LED
    delay(200); // Debounce delay
    while (digitalRead(buttonPin) == LOW); // Wait for release
  }
}
滚动至顶部