#include <WiFi.h>
#include <WebServer.h>
#define WIFI_SSID "Wokwi-GUEST"
#define WIFI_PASSWORD ""
WebServer server(80);
const int ledCount = 10;
int ledPins[] = { 15, 2, 0, 4, 16, 17, 5, 18, 19, 21 };
void sendHtml() {
String response = R"(
<!DOCTYPE html><html>
<head>
<title>LED Bar Graph Control</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
body { font-family: Arial, sans-serif; text-align: center; }
h1 { margin-bottom: 1.2em; }
form { font-size: 2em; }
input[type="number"] { width: 60px; padding: 5px; font-size: 2em; margin: 10px; }
input[type="submit"] { padding: 10px 20px; font-size: 2em; background-color: #4CAF50; color: white; border: none; border-radius: 5px; cursor: pointer; }
input[type="submit"]:hover { background-color: #45a049; }
</style>
</head>
<body>
<h1>LED Bar Graph Control</h1>
<form action="/setLevel" method="get">
<label for="level">Set LED Level (1-10): </label>
<input type="number" id="level" name="level" min="1" max="10" value="1" required>
<input type="submit" value="Set Level">
</form>
</body>
</html>
)";
server.send(200, "text/html", response);
}
void handleSetLevel() {
int level = server.arg("level").toInt();
if (level >= 1 && level <= 10) {
for (int i = 0; i < ledCount; i++) {
if (i < level) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
server.send(200, "text/html", "<h1>LED Bar Graph Control</h1><p>LED Level set to " + String(level) + "</p><a href='/'>Go back</a>");
} else {
server.send(400, "text/html", "<h1>Error</h1><p>Invalid level. Please enter a value between 1 and 10.</p><a href='/'>Go back</a>");
}
}
void setup() {
Serial.begin(115200);
for (int i = 0; i < ledCount; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW);
}
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
Serial.print("Connecting to WiFi ");
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println(" Connected!");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", sendHtml);
server.on("/setLevel", HTTP_GET, handleSetLevel);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
delay(2);
}
Loading
esp32-devkit-c-v4
esp32-devkit-c-v4