Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. I need help with an ESP8266 and Servo.H

I need help with an ESP8266 and Servo.H

Scheduled Pinned Locked Moved Development
1 Posts 1 Posters 1.4k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    ecsunix
    wrote on last edited by
    #1

    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>&nbsp;<a href=\"reset\"><button>Reset</button></a></p>";
      webPage += "<h2> </h1><p>PM Medicine  <a href=\"deliver\"><button>Deliver</button></a>&nbsp;<a href=\"reset\"><button>Reset</button></a></p>";
      webPage += "<h3> </h1><p>Treat  <a href=\"deliver\"><button>Deliver</button></a>&nbsp;<a href=\"reset\"><button>Reset</button></a></p>";
      webPage += "<h4> </h1><p>Kong Toy  <a href=\"deliver\"><button>Deliver</button></a>&nbsp;<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();
    }
    1 Reply Last reply
    0

    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
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    14

    Online

    12.1k

    Users

    11.2k

    Topics

    113.4k

    Posts


    Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • MySensors
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular