#include <WiFi.h>
#include <ESPAsyncWebServer.h>
// Nome e password dell'Access Point
const char* ssid = "ESP32-C3-AP";
const char* password = "12345678";
// Pin da controllare
const int pin10 = 10;
const int pin9 = 9;
const int pin8 = 8;
// Stato dei pin
volatile bool blink10 = false;
volatile bool blink9 = false;
volatile bool blink8 = false;
AsyncWebServer server(80);
void setup() {
// Configurazione dei pin
pinMode(pin10, OUTPUT);
pinMode(pin9, OUTPUT);
pinMode(pin8, OUTPUT);
// Avvio seriale
Serial.begin(115200);
// Configurazione Access Point
WiFi.softAP(ssid, password);
Serial.println("Access Point creato:");
Serial.print("SSID: ");
Serial.println(ssid);
Serial.print("IP Address: ");
Serial.println(WiFi.softAPIP());
// Pagina HTML
const char html[] = R"rawliteral(
<!DOCTYPE html>
<html>
<head>
<title>Controllo PIN</title>
<style>
body { font-family: Arial; text-align: center; }
button { padding: 10px 20px; margin: 5px; font-size: 16px; }
</style>
</head>
<body>
<h1>Controllo dei Pin</h1>
<div>
<h2>Pin 10</h2>
<button onclick="sendRequest('pin10', 'on')">ON</button>
<button onclick="sendRequest('pin10', 'off')">OFF</button>
<button onclick="sendRequest('pin10', 'blink')">BLINK</button>
</div>
<div>
<h2>Pin 9</h2>
<button onclick="sendRequest('pin9', 'on')">ON</button>
<button onclick="sendRequest('pin9', 'off')">OFF</button>
<button onclick="sendRequest('pin9', 'blink')">BLINK</button>
</div>
<div>
<h2>Pin 8</h2>
<button onclick="sendRequest('pin8', 'on')">ON</button>
<button onclick="sendRequest('pin8', 'off')">OFF</button>
<button onclick="sendRequest('pin8', 'blink')">BLINK</button>
</div>
<script>
function sendRequest(pin, action) {
fetch(`/${pin}/${action}`).then(response => {
if (response.ok) {
alert(`${pin} impostato su ${action}`);
}
});
}
</script>
</body>
</html>
)rawliteral";
// Gestione richieste
server.on("/pin10/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin10, HIGH);
blink10 = false;
request->send(200, "text/plain", "Pin 10 ON");
});
server.on("/pin10/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin10, LOW);
blink10 = false;
request->send(200, "text/plain", "Pin 10 OFF");
});
server.on("/pin10/blink", HTTP_GET, [](AsyncWebServerRequest *request){
blink10 = true;
request->send(200, "text/plain", "Pin 10 BLINK");
});
server.on("/pin9/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin9, HIGH);
blink9 = false;
request->send(200, "text/plain", "Pin 9 ON");
});
server.on("/pin9/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin9, LOW);
blink9 = false;
request->send(200, "text/plain", "Pin 9 OFF");
});
server.on("/pin9/blink", HTTP_GET, [](AsyncWebServerRequest *request){
blink9 = true;
request->send(200, "text/plain", "Pin 9 BLINK");
});
server.on("/pin8/on", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin8, HIGH);
blink8 = false;
request->send(200, "text/plain", "Pin 8 ON");
});
server.on("/pin8/off", HTTP_GET, [](AsyncWebServerRequest *request){
digitalWrite(pin8, LOW);
blink8 = false;
request->send(200, "text/plain", "Pin 8 OFF");
});
server.on("/pin8/blink", HTTP_GET, [](AsyncWebServerRequest *request){
blink8 = true;
request->send(200, "text/plain", "Pin 8 BLINK");
});
// Servire la pagina HTML
server.on("/", HTTP_GET, [html](AsyncWebServerRequest *request){
request->send(200, "text/html", html);
});
// Avvio server
server.begin();
}
void loop() {
static unsigned long lastBlink = 0;
if (millis() - lastBlink >= 1000) {
lastBlink = millis();
if (blink10) digitalWrite(pin10, !digitalRead(pin10));
if (blink9) digitalWrite(pin9, !digitalRead(pin9));
if (blink8) digitalWrite(pin8, !digitalRead(pin8));
}
}
Loading
xiao-esp32-c3
xiao-esp32-c3