Mercurial > ukatka
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); +}
