Hi guys,
just wanted to share my project on controlling a servo motor plugged onto a nodemcu board through the blynk app using a button widget. So basically what happens is that when the button widget is pressed on the app, the servo turns on and rotates based on a simple servo sweep sketch from the Arduino IDE examples. Once the button is pressed, the servo rotates continuously until the button is in the off position which is when the servo stops. This is done using virtual pins to run a certain type of code (in this case the servo sweep code) when the virtual pin is set to a high value (i.e when the button is pressed). The code below is tailored to run on a nodemcu board. Minor tweaks and changes can be made to make it suitable for different for different boards and also to modify how the servo rotates.
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <Servo.h>
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "auth token";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "network name";
char pass[] = "password";
Servo servo;
void cradle() {
//you begin your own personal code for servo here
int pos;
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(5); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
servo.write(pos); // tell servo to go to position in variable 'pos'
delay(10); // waits 15ms for the servo to reach the position
}
//your personal code for servo should end here
}
BLYNK_WRITE(V3)
{
int pinValue = param.asInt();
if (pinValue == 1) { // if Button sends 1
cradle(); // start the function cradle
Blynk.run(); // Run rest of show in-between waiting for this loop to repeat or quit.
int pinValue = 0; // Set V3 status to 0 to quit, unless button is still pushed (as per below)
Blynk.syncVirtual(V3); // ...Then force BLYNK_WRITE(V3) function check of button status to determine if repeating or done.
}
}
void setup()
{
// Debug console
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
// You can also specify server:
//Blynk.begin(auth, ssid, pass, "blynk-cloud.com", 80);
//Blynk.begin(auth, ssid, pass, IPAddress(192,168,1,100), 8080);
servo.attach(4); //attaches servo to pin 4 (D2 on node mcu)
}
void loop()
{
Blynk.run();
}
If you are wondering how I did this, all the credit goes to @Gunner. (Im a newbie myself)
I just took a look at a few topics he had solved and followed his instruction on reading the blynk docs
Hope this was helpful!