Control de Servos con Blynk

En este sketch vamos a mover un servo con un slider como widget en la app., utilizando la placa “node mcu Lolin V3″(esp8266),pero que valdría tambien para Esp32.

Si lo hacemos de forma simple y sin control escribiriamos el ejemplo que viene en el “Blynk Example Browser” (https://examples.blynk.cc/?board=NodeMCU&shield=ESP8266%20WiFi&example=GettingStarted%2FServo)

Si que controlaremos nuestro servo,pero de una manera brusca y sin control de la velocidad.

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#include <Servo8266.h>

const char wifi_ssid[]="atom_2.4g";
const char wifi_pass[]="xxxxxxx";
const char auth[]="gbSwzk0iTlpXu2diXzPTRpsxAdQMjutU";
Servo8266 servo_12;




  BLYNK_WRITE(V1)
{
  servo_12.write=param.asInt();
  
}


void setup()
{
 servo_12.attach(12);

 servo_12.write(pos);
 

  Blynk.begin(auth,wifi_ssid,wifi_pass);
  servo_12.write(0);

}
void loop()
{
  Blynk.run();
  Slider();

}

Pero como no nos gusta ese control ,presento este otro sketch donde podremos controlar de forma suave el movimiento y con la posibilidad de supervisar la velocidad jugando con delay y con el intervalo de barrido, que no es mas que aumentar el incremento o decremento de la posición(pos).

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

#include <Servo8266.h>

const char wifi_ssid[]="atom_2.4g";
const char wifi_pass[]="xxxxxxxxx";
const char auth[]="gbSwzk0iTlpXu2diXzPTRpsxAdQMjutU";
Servo8266 servo_12;

int slider;
int pos;


  BLYNK_WRITE(V1)
{
  slider=param.asInt();
  
}

void Slider(){
  if (slider < pos) {//de 180-0
    pos = (pos - 1);
    servo_12.write(pos);
    delay(50);
    
      if (pos < slider) {
      pos = slider;
}
  }
  
 if (slider > pos) {//de 0-180
    pos = (pos + 1);
    servo_12.write(pos);
    delay(50);
 
     if (pos > slider) {
      pos = slider; 

}
}
}
void setup()
{
 servo_12.attach(12);
 pos=0;
 servo_12.write(pos);
 

  Blynk.begin(auth,wifi_ssid,wifi_pass);
  servo_12.write(0);

}
void loop()
{
  Blynk.run();
  Slider();

}

La clave esta en la función void slider(); y escribirlo tal como lo pongo,porque si recolocamos los ” }”ya no ira de forma suave el movimiento del servo.



void Slider(){
  if (slider < pos) {//de 180-0
    pos = (pos - 1);
    servo_12.write(pos);
    delay(50);
    
      if (pos < slider) {
      pos = slider;
}
  }
  
 if (slider > pos) {//de 0-180
    pos = (pos + 1);
    servo_12.write(pos);
    delay(50);
 
     if (pos > slider) {
      pos = slider; 

}
}

La otra clave esta en posicionar el servo en el void setup a 0º



pos=0;
 servo_12.write(pos);

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Translate »