I need help with an ESP8266 and Servo.H
-
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(); }
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login