Hello All,
Can anyone offer guidance or show me how to add additional servos to this project? I can't seem to make any forward progress.
The sketch is working perfectly to control a single servo connected to pin D4 via a webpage.
I'm using a NodeMCU ESP-12 (ESP8266) and some legos.
I adopted a 12 week old puppy that requires medication midday.
My commute is 38 miles each way so giving him his meds remotely is ideal.
Unfortunately he also suffers from separation anxiety and I would like to be able to give him a treat and a toy during the day to help him with this. (That's the reason for servo's 3 and 4)
Any help would be greatly appreciated!
Johnny
Insert Code Here
```I started with this code: https://github.com/hobbzey/Simplest-SmartThings-ESP8266-Blinds/blob/master/ESP8266-Sketch.ino<img
My working sketch:
/*
* Simple HTTP get webclient test
*/
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Servo.h>
#define ssid "ChangeME"
#define password "Password"
ESP8266WebServer server(83);
Servo myservo;
int pos = 0;
int state = 0;
int prevstate = 0;
int dirc = 0;
int servoPin = D4;
String webPage = "";
void setup() {
Serial.begin(115200);
delay(100);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
// Set a static IP (optional)
IPAddress ip(192, 168, 1, 71);
IPAddress gateway(192, 168, 1, 1);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, gateway, subnet);
// End of set a static IP (optional)
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
webPage += "<h1>Dog Rx Machine</h1><p>AM Medicine <a href=\"deliver\"><button>Deliver</button></a> <a href=\"reset\"><button>Reset</button></a></p>";
webPage += "<h2> </h1><p>PM Medicine <a href=\"deliver\"><button>Deliver</button></a> <a href=\"reset\"><button>Reset</button></a></p>";
webPage += "<h3> </h1><p>Treat <a href=\"deliver\"><button>Deliver</button></a> <a href=\"reset\"><button>Reset</button></a></p>";
webPage += "<h4> </h1><p>Kong Toy <a href=\"deliver\"><button>Deliver</button></a> <a href=\"reset\"><button>Reset</button></a></p>";
server.on("/", []() {
server.send(200, "text/html", webPage);
});
server.on("/deliver", []() {
server.send(200, "text/html", webPage);
Serial.println("HTTP OPEN COMMAND RECEIVED");
dirc = 0; // direction for servo to run
state = 2; // sets current state
});
server.on("/reset", []() {
server.send(200, "text/html", webPage);
Serial.println("HTTP CLOSE COMMAND RECEIVED");
dirc = 180; // direction for servo to run
state = 1; // sets current state
});
server.begin();
Serial.println("Server started");
}
void servo_move() {
Serial.println("State Change. Rotating Servo");
if ( dirc == 180) {
myservo.attach(servoPin); // energize servo
delay(50);
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 90 degrees in steps of 1 degree CHANGE 90 TO MATCH ANGLE OF TILT DESIRED
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 30ms between each degree to slow rotation speed
}
delay(50);
myservo.detach(); // movement finished so detach servo to conserve power
}
else if (dirc == 0) {
myservo.attach(servoPin); // energize servo
delay(50);
for (pos = 90; pos >= 0; pos -= 1) { // goes from 90 degrees to 0 degrees in steps of 1 degree CHANGE 90 TO MIRROR ANGLE OF TILT DESIRED ABOVE
myservo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 30ms between each degree to slow rotation speed
}
delay(50);
myservo.detach(); // movement finished so detach servo to conserve power
}
Serial.println("Returning to main loop");
return;
}
void loop() {
if (state != prevstate) {
Serial.println("State change!");
servo_move();
}
prevstate = state;
server.handleClient();
}