Close
0%
0%

HariFun #150 Playing with ESP32

Goofing around with the new ESP32 module

Similar projects worth following
Thanks to Daniel from <a href="http://EZSBC.com" target="_blank">EZSBC.com</a> for sending me some ESP32 modules! Giveaway coming soon. Stay tuned on my YouTube Channel: <a href="https://www.youtube.com/user/hwiguna" target="_blank">https://www.youtube.com/user/hwiguna</a>

  • Twelve WiFi controlled Servos on the ESP32

    Hari Wiguna04/09/2017 at 22:44 0 comments

    Please forgive this messy code, I was just goofing around and did not plan on sharing it, but here I am sharing it. LOL

    #include <WiFi.h>
    
    const char* ssid     = "(Your WiFi Access Point Name)";
    const char* password = "(Your WiFi Access Point Password)";
    int ledPin = 4;
    
    WiFiServer server(80);
    
    //----------------------------------
    #include "esp32-hal-ledc.h"
    
    uint32_t maxint = 65535;
    uint32_t servoMax = 8000;
    uint32_t servoMin = 1700;
    uint32_t servoLow = servoMin; //1700 + 1300;
    uint32_t servoHigh = 1700 + 1000 + 1300; //servoLow+1000;
    uint32_t servoCenter = (servoLow + servoHigh) / 2;
    
    const byte numberOfServos = 12;
    byte servoPins[numberOfServos] = {5, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23};
    char command = 0;
    
    void setupServo()
    {
      for (byte servoIndex = 0; servoIndex < numberOfServos; servoIndex++)
      {
        byte channel = servoIndex;
        byte servoPin = servoPins[servoIndex];
    
        ledcSetup(channel, 50, 16); // channel X, 50 Hz, 16-bit depth
        ledcAttachPin(servoPin, channel);   // GPIO servoPin on channel X
        ledcWrite(channel, servoHigh); //servoMin
      }
      delay(2000);
    }
    //----------------------------------
    
    void setup()
    {
      Serial.begin(115200);
      pinMode(ledPin, OUTPUT);      // set the LED pin mode
    
      delay(10);
    
      // We start by connecting to a WiFi network
    
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
    
      WiFi.begin(ssid, password);
    
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
    
      server.begin();
    
      setupServo();
    }
    
    void Marching()
    {
      for (byte servoIndex = 0; servoIndex < numberOfServos; servoIndex++)
      {
        byte channel = servoIndex;
        ledcWrite(channel, servoHigh);
      }
      delay(500);
      for (byte servoIndex = 0; servoIndex < numberOfServos; servoIndex++)
      {
        byte channel = servoIndex;
        ledcWrite(channel, servoLow);
      }
      delay(500);
    }
    
    void LeftToRight(int servoValue, int dly)
    {
      for (int head = 0; head < numberOfServos; head++)
      {
        if (head >= 0 && head < numberOfServos) ledcWrite(head, servoValue);
        delay(dly);
      }
    }
    
    void RightToLeft(int servoValue, int dly)
    {
      for (int head = numberOfServos - 1; head >= 0 ; head--)
      {
        if (head >= 0 && head < numberOfServos) ledcWrite(head,  servoValue);
        delay(dly);
      }
    }
    
    void SpreadOut(int dly)
    {
      int half = (numberOfServos / 2);
      for (int i = 0; i <= half ; i++)
      {
        int left = half - i;
        int right = half + i;
        if (left >= 0 && left < numberOfServos) ledcWrite(left,  servoHigh);
        if (right >= 0 && right < numberOfServos) ledcWrite(right,  servoLow);
        delay(dly);
      }
    }
    void SpreadOutRestore(int dly)
    {
      int half = (numberOfServos / 2);
      for (int i = 0; i <= half ; i++)
      {
        int left = half - i;
        int right = half + i;
        if (left >= 0 && left < numberOfServos) ledcWrite(left,  servoCenter);
        if (right >= 0 && right < numberOfServos) ledcWrite(right,  servoCenter);
        delay(dly);
      }
    }
    void OutIn(int dly)
    {
      int half = (numberOfServos / 2);
      for (int i = 0; i <= half ; i++)
      {
        int left = (numberOfServos - 1) - i;
        int right = i;
        if (left >= 0 && left < numberOfServos) ledcWrite(left,  servoCenter);
        if (right >= 0 && right < numberOfServos) ledcWrite(right,  servoCenter);
        delay(dly);
      }
    }
    
    int value = 0;
    
    void SendHtmlResponse(WiFiClient client)
    {
      // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
      // and a content-type so the client knows what's coming, then a blank line:
      client.println("HTTP/1.1 200 OK");
      client.println("Content-type:text/html");
      client.println();
    
      // the content of the HTTP response follows the header:
      client.print("<h1 style='font-size:400%;'>");
      client.print("<a href='/'>Home</a><br>");
      client.print("Left to Right: <a href='/A'>&#92;&#92;&#92;</a>&nbsp;&nbsp;<a href='/B'>///</a><br>");
      client.print("Right to Left: <a href='/C'>&#92;&#92;&#92;</a>&nbsp;&nbsp;<a href='/D'>///</a><br>");
      client.print("All: <a href='/E'>&#92;&#92;&#92;</a>&nbsp;&nbsp;<a href='/H'>Center</a>&nbsp;&nbsp;<a...
    Read more »

View project log

Enjoy this project?

Share

Discussions

experimentool wrote 04/17/2017 at 15:01 point

Awesome demo Hari.  I have completed many projects with the esp8266 and look forward to working with the esp32

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates