Control Servo con dos botones

Control Servo mediante dos pulsadores

En esta entrada público el montaje para el control de un servomotor mediante dos pulsadores, para controlar el giro 180º.  Dejaré al final el enlace a un vídeo donde se verá la simulación.

Listado de Materiales:
  • Servomotor
  • Dos resistencias de 1KOhm
  • Dos pulsadores
  • Placa Arduino 
  • Dos diodos LED
  • Fuente de alimentación externa de 5V (Opcional)
  • Placa de prototipos
  • Cables de conexión tipo Macho-Macho

Esquema de conexión "Pull UP" y "Pull Down"


En nuestro caso hemos utilizado la configuración "Pull Down" para conectar las entradas, hemos conectado los botones a los Pines digitales 7 y 8 y el cable de control del servo al Pin digital 3 PWM.


Esquema realizado en Tinkercad:



Para realizar la prueba en montaje real y por tratarse de un servo de baja potencia hemos simplificado el montaje alimentado todo a la salida 5V y GND de Arduino. Es importante tener en cuenta que si se realiza el circuito con alimentación externa, se debe poner el GND en común con la fuente de alimentación. Sino no funcionará.

Imagen de montaje real:





Código del sketch comentado:

---------------------------------------------------------------------------------

//Incluyo las librerías necesarias para mi proyecto
//Mi configuración de los botones 1 y 2 es de tipo "Pull Down", si pulso el botón, pongo 0V en la entrada.


#include   //Incluyo la librería "Servo.h"

//__________________________________________________________________________________________
//Creo los objetos Servo y defino las variables boton1 y boton2 asociadas a mis botones reales. 
//la variable "int" me indica que es una variable que solo admite números enteros (1,2,5,58...)

Servo servomotor;  //Creo un objeto llamado servo y los objetos botón 1 y botón 2
int boton1 = 7;  //Indico que el boton1 se conecta al pin digital 7 botón para disminuir angulo
int boton2 = 8; //Indico  que el boton2 se conecta el pin digital 8 botón para aumenta el angulo
int angulo = 0;   //Variable para el ángulo, inicia en 0
//___________________________________________________________________________________________
//Secuencia de inicial

void setup() {

  Serial.begin (9600); //Inicio el monitor serial para ver la posición en pantalla
  servomotor.attach(3);  //Conecto el servomotor al Pin digital PWM 3 del Arduino.
  pinMode(boton1, INPUT); //Indico que ponga el Pin asociado al boton1 como una variable de entrada.
  pinMode(boton2, INPUT); //Indico que ponga el Pin asociado al boton2 como una variable de entrada.
  
  servomotor.write(angulo = 90);//Lleva el servo a la posición 90º. Puedo elegir el angulo que quiera.
}
//____________________________________________________________________________________________
//Secuencia ciclo continua

void loop() {

  if (digitalRead(boton1) == LOW) //condición "if" Si la entrada boton1 es 0V haz lo siguiente:
  {
    angulo++; //Incrementa el valor del angulo.
    if (angulo >= 179)    //condición "if" Si el angulo es menor o igual a 180 haz lo siguiente:
       {angulo = 180;}         //Estable el angulo en 180º
  }
  if (digitalRead(boton2) == LOW) //condición "if" Si la entrada boton2 es 0V haz lo siguiente:
  {
    angulo--;  //Disminuye el valor del angulo.
    if (angulo <= 10)     //condición "if" Si el angulo es mayor o igual a 0 haz lo siguiente:
       {angulo = 9;}          //El angulo no disminuye mas aya de 0 grados
  }
  servomotor.write(angulo);  //Envía las ordenes al servo para que escriba el angulo.
  Serial.println (angulo);   //Imprime en la pantalla monitor serial el angulo.
  delay(10);  // Establece un tiempo de espera en 10 milisegundos.
}

--------------------------------------------------------------------

Video de prueba de funcionamiento:





Fuentes:

El material del código original pertenece a: 

http://arduparatodos.blogspot.com/2017/02/controlar-servomotor-con-arduino-varios.html

https://www.youtube.com/watch?v=7sdEeUD9qeU

La imagen original de la conexión Pull Up, Pull Down pertenece a:


https://programarfacil.com/blog/arduino-blog/resistencia-pull-up-y-pull-down/

Yo solo lo he resubido el material adaptándolo a mis necesidades.
Espero que el material subido sea de utilidad.

Comentarios

Entradas populares de este blog

Debian 8.0 Jessie CD cover