Created
December 15, 2016 21:29
-
-
Save download13/c99a61010849c0fd18bab03b163e6915 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define LEFT_ENABLE D5 | |
#define L_POS D1 | |
#define L_NEG D2 | |
#define RIGHT_ENABLE D6 | |
#define R_POS D4 | |
#define R_NEG D3 | |
#include <ESP8266WiFiMulti.h> | |
#include <ESP8266WebServer.h> | |
#include <WebSocketsServer.h> | |
#include <ESP8266mDNS.h> | |
#include <FS.h> | |
ESP8266WiFiMulti WiFiMulti; | |
ESP8266WebServer server(80); | |
WebSocketsServer wss(81); | |
void leftMotor(int direction) { | |
Serial.print("Left Motor: "); | |
switch (direction) { | |
case 0: | |
Serial.println("Stopped"); | |
digitalWrite(L_POS, 0); | |
digitalWrite(L_NEG, 0); | |
break; | |
case 1: | |
Serial.println("Forward"); | |
digitalWrite(L_POS, 1); | |
digitalWrite(L_NEG, 0); | |
break; | |
case -1: | |
Serial.println("Backward"); | |
digitalWrite(L_POS, 0); | |
digitalWrite(L_NEG, 1); | |
break; | |
} | |
} | |
void rightMotor(int direction) { | |
Serial.print("Right Motor: "); | |
switch (direction) { | |
case 0: | |
Serial.println("Stopped"); | |
digitalWrite(R_POS, 0); | |
digitalWrite(R_NEG, 0); | |
break; | |
case 1: | |
Serial.println("Forward"); | |
digitalWrite(R_POS, 1); | |
digitalWrite(R_NEG, 0); | |
break; | |
case -1: | |
Serial.println("Backward"); | |
digitalWrite(R_POS, 0); | |
digitalWrite(R_NEG, 1); | |
break; | |
} | |
} | |
void turnLeft() { | |
leftMotor(-1); | |
rightMotor(1); | |
Serial.println("Turning Left"); | |
} | |
void turnRight() { | |
leftMotor(1); | |
rightMotor(-1); | |
Serial.println("Turning Right"); | |
} | |
void moveForward() { | |
leftMotor(1); | |
rightMotor(1); | |
Serial.println("Moving Forward"); | |
} | |
void moveBackward() { | |
leftMotor(-1); | |
rightMotor(-1); | |
Serial.println("Moving Backward"); | |
} | |
void stop() { | |
leftMotor(0); | |
rightMotor(0); | |
Serial.println("Stopped"); | |
} | |
void webSocketEvent(uint8_t client, WStype_t type, uint8_t * payload, size_t length) { | |
switch (type) { | |
case WStype_DISCONNECTED: | |
break; | |
case WStype_CONNECTED: | |
wss.sendTXT(client, "ready"); | |
break; | |
case WStype_TEXT: | |
char instr = payload[0]; | |
switch (instr) { | |
case 'f': | |
moveForward(); | |
break; | |
case 'l': | |
turnLeft(); | |
break; | |
case 'r': | |
turnRight(); | |
break; | |
case 'b': | |
moveBackward(); | |
break; | |
case 's': | |
stop(); | |
break; | |
} | |
break; | |
} | |
} | |
void serveFileContents(String path) { | |
File file = SPIFFS.open(path, "r"); | |
server.streamFile(file, ""); | |
} | |
void setup() { | |
Serial.begin(115200); | |
Serial.println(""); | |
pinMode(L_POS, OUTPUT); | |
pinMode(L_NEG, OUTPUT); | |
pinMode(R_POS, OUTPUT); | |
pinMode(R_NEG, OUTPUT); | |
pinMode(LEFT_ENABLE, OUTPUT); | |
pinMode(RIGHT_ENABLE, OUTPUT); | |
digitalWrite(LEFT_ENABLE, HIGH); | |
digitalWrite(RIGHT_ENABLE, HIGH); | |
stop(); | |
SPIFFS.begin(); | |
WiFiMulti.addAP("yourap", "yourpass"); | |
Serial.println("Connecting to wifi..."); | |
while (WiFiMulti.run() != WL_CONNECTED) { | |
delay(100); | |
} | |
Serial.print("Connected to wifi as "); | |
Serial.println(WiFi.localIP()); | |
wss.begin(); | |
Serial.println("Web server listening"); | |
wss.onEvent(webSocketEvent); | |
Serial.println("Websocket server listening"); | |
server.on("/", []() { | |
if (!SPIFFS.exists("/index.html")) { | |
Serial.println("index.html does not exist"); | |
server.send(404, "text/plain", "File not found"); | |
return; | |
} | |
File file = SPIFFS.open("/index.html", "r"); | |
server.streamFile(file, "text/html"); | |
file.close(); | |
}); | |
server.on("/main.js", []() { | |
if (!SPIFFS.exists("/main.js")) { | |
Serial.println("main.js does not exist"); | |
server.send(404, "text/plain", "File not found"); | |
return; | |
} | |
File file = SPIFFS.open("/main.js", "r"); | |
server.streamFile(file, "text/javascript"); | |
file.close(); | |
}); | |
server.begin(); | |
MDNS.begin("robot"); | |
MDNS.addService("http", "tcp", 80); | |
MDNS.addService("ws", "tcp", 81); | |
Serial.println("Listing SPIFFS files:"); | |
Dir dir = SPIFFS.openDir("/"); | |
while (dir.next()) { | |
File entry = dir.openFile("r"); | |
Serial.println(entry.name()); | |
entry.close(); | |
} | |
Serial.println("Initialization done"); | |
} | |
void loop() { | |
wss.loop(); | |
server.handleClient(); | |
delay(10); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment