changeset 3:e74020c33d2c default tip

slave
author Radomir Dopieralski <sheep-devel@sheep.art.pl>
date Thu, 24 Dec 2015 13:54:53 +0100
parents 07a6ea1f8a75
children
files slave/slave.ino
diffstat 1 files changed, 53 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/slave/slave.ino	Thu Dec 24 13:54:53 2015 +0100
@@ -0,0 +1,53 @@
+#include <Servo.h>
+#include <ESP8266WiFi.h>
+
+WiFiServer server(1337);
+WiFiClient client;
+
+const int MAX_SERVO = 8;
+const int PINS[MAX_SERVO] = {1, 3, 5, 4, 16, 14, 12, 13};
+
+Servo servos[MAX_SERVO];
+
+
+void setup() {
+    delay(1000);
+    WiFi.mode(WIFI_STA);
+    WiFi.begin("ssid", "password");
+    while (WiFi.status() != WL_CONNECTED) {
+        delay(500);
+    }
+    server.begin();
+    server.setNoDelay(true);
+    for (int i = 0; i < MAX_SERVO; ++i) {
+        servos[i].attach(PINS[i]);
+        servos[i].writeMicroseconds(1500);
+    }
+}
+
+void loop() {
+    union {
+        byte bytes[2];
+        uint16_t integer;
+    } int2bytes;
+    byte servo;
+
+    if (server.hasClient()) {
+        if (client) {
+            client.stop();
+        }
+        client = server.available();
+    }
+    if (client && client.connected()) {
+        while (client.available() >= 3) {
+            servo = client.read();
+            int2bytes.bytes[0] = client.read();
+            int2bytes.bytes[1] = client.read();
+            if (servo < MAX_SERVO) {
+                servos[servo].writeMicroseconds(int2bytes.integer);
+            }
+            yield();
+        }
+    }
+    delay(20);
+}