summaryrefslogtreecommitdiff
path: root/webserver_servo/webserver_servo.ino
blob: 41d490a1a84ba6d3a4845d5095b7880084781c5b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include <WiFi.h>
#include <WebServer.h>
#include <ESP32Servo.h>

const char* SSID = "FRITZ!Box 7590 QM";
const char* PASSWORD = "LillyUndLuna";

Servo base;
WebServer server(80);

const char* INDEX_HTML PROGMEM = R"rawlit(
<!DOCTYPE html><html lang="en">
<head><meta charset="utf-8"><title>ESP32 Servo Control</title>
<style>
  body{font-family:sans-serif;text-align:center;padding:2rem;background:#f4f6fa;}
  input[type=range]{width:80%%;}
  .angle{font-weight:bold;font-size:1.2rem;}
</style>
<script>
function updateAngle(val){
  document.getElementById('aval').innerText=val;
  fetch('/?angle='+val);
}
</script></head>
<body>
  <h2>ESP32 Servo on GPIO 15</h2>
  <p><span class="angle" id="aval">90</span>°</p>
  <input type="range" min="0" max="180" value="90" oninput="updateAngle(this.value)">
  <p>Drag the slider or send <code>/?angle=°</code></p>
</body></html>
)rawlit";

void handleRoot() {
  if (server.hasArg("angle")) {
    int angle = server.arg("angle").toInt();
    angle = constrain(angle, 0, 180);
    Serial.printf("%s\n", analogRead(15))
    base.write(angle);
  }
  server.send_P(200, "text/html", INDEX_HTML);
}

void handleNotFound() {
  server.send(404, "text/plain", "404: Not found");
}

void setup() {
  Serial.begin(115200);

  Serial.printf("Connecting to %s", SSID);
  WiFi.begin(SSID, PASSWORD);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print('.');
  }
  Serial.printf("\nConnected! IP address: %s\n", WiFi.localIP().toString().c_str());

  base.attach(15);
  base.write(0);

  server.on("/", handleRoot);
  server.onNotFound(handleNotFound);
  server.begin();
}

void loop() {
  server.handleClient();
}