Como accionar un servomotor con dos pulsadores
Video
En esta práctica programaremos un control de giro para un servomotor SG90 usando dos pulsadores y un Arduino UNO.
Como accionar un servomotor con dos pulsadores
- Materiales:
Para realizar el circuito necesitas:
• 1 Arduino UNO,
• 1 Servomotor SG90,
• 2 pulsadores,
• 2 resistencias de 10k,
• 1 Protoboard y Jumpers.
- Código
Comenzaremos el sketch incluyendo la librería para el servomotor que ya tiene instalado el IDE de Arduino. Podemos añadirla desde la pestaña Programa->Incluir Librería -> Servo. Automáticamente se incluirá en el código.
Una vez que se tengamos la librería, abriremos un nuevo objeto de tipo “Servo” con el nombre de “servo1” (tú puedes nombrarlo como gustes).
#include <Servo.h>
Servo servo1;
Antes de entrar al void setup(), definiremos las variables que utilizaremos en todo el programa. Para el servo, usaremos dos parámetros, el pin donde estará conectado el cable de datos y el ángulo.
Y para los pulsadores también tomaremos dos parámetros, el pin digital donde estarán puenteados y el valor que arroje cada uno al Arduino. Dando un total de seis variables de tipo entera.
int servopin = 8;
int angulo = 0;
int buttonPin1 = 6;
int buttonPin2 = 7;
int buttonState1 = 0;
int buttonState2 = 0;
Dentro del void setup(), declararemos como se comportarán dichos pines. Iniciando con el servo, mediante la función .attach, le diremos a la librería Servo.h que ahí está mi servomotor conectado. Y con la función pinMode que el pin de cada pulsador será de entrada.
Finalizando la configuración, mandaremos al servo al ángulo 0 cada vez que se ejecute el programa usando .write.
void setup() {
servo1.attach(servopin);
pinMode(buttonPin1, INPUT);
pinMode(buttonPin2, INPUT);
servo1.write(angulo);
}
Para el void loop(), estructuraremos todas las instrucciones que debe hacer el Arduino. Primero obtendremos el estado de cada pulsador al momento de correr el programa en la placa.
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
Abriremos un condicional para que ejecute el incremento del ángulo cuando el primer pulsador mande un 1 o esté siendo presionado. Poniendo “++” después del nombre de la variable, le decimos al compilador que aumente en 1 esa variable.
Para que nuestro contador no se nos vaya al infinito y para que se quede en el rango de 0 a 180, agregaremos otro condicional que reescriba el valor del ángulo al valor máximo del rango, ósea 180 grados.
if (buttonState1 == HIGH)
{
angulo++;
if (angulo >= 180)
{
angulo = 180;
}
}
Hacemos lo mismo para el segundo pulsador, pero invirtiendo la lógica, es decir, en vez de aumentar en 1 el valor del ángulo, vamos a disminuirlo en 1, utilizando “--” o el doble menos.
Dentro del segundo condicional este tiene que ser menor o igual que 0 para que no obtenga valores negativos la variable.
if (buttonState2 == HIGH)
{
angulo--;
if (angulo <= 0)
{
angulo = 0;
}
}
Para que finalicemos mandando dicho ángulo al servomotor con la función .write con un delay de 10 milisegundo. El delay es opcional.
void loop() {
buttonState1 = digitalRead(buttonPin1);
buttonState2 = digitalRead(buttonPin2);
if (buttonState1 == HIGH)
{
angulo++;
if (angulo >= 180)
{
angulo = 180;
}
}
if (buttonState2 == HIGH)
{
angulo--;
if (angulo <= 0)
{
angulo = 0;
}
}
servo1.write(angulo);
delay(10);
}
- Instrumentación
Colocaremos primero los pulsadores. Los pulsadores los pondremos en un extremo de la protoboard. En cada pulsador, conectaremos una de las patas a 5v y el otro haremos un nodo donde estará una pata de la resistencia de 10k y el puente donde lo conectaremos al pin digital de Arduino. El extremo que falta por conectar de la resistencia lo pondremos en GND.
Puenteamos el pin de 5v del Arduino a la línea Vcc y GND a la línea de tierra de la protoboard para alimentar el pot.
Para la conexión del servomotor, identificamos primero los cables de alimentación, para el SG90 son rojo y café, y estos los conectaremos a las líneas de voltaje de la protoboard. Finalizando con el cable de datos (cable naranja) puenteado al pin 8 digital del Arduino.
DESCARGAS
LINK DE DESCARGA
Imágenes
APRENDE LO QUE NECESITAS
NUESTROS CURSOS
Creación de un HMI en Android Studio y Arduino
Nivel: Básico 2 horas y 30 min (146 min.)
Diseña, maqueta y programa un HMI completo en Android Studio vinculado a un Arduino mediante Bluetooth.
CONSTRUYE un DISPENSADOR AUTOMÁTICO CASERO sin ARDUINO desde CERO
Nivel: Básico 27 minutos
Construye desde cero un dispensador automático casero sin Arduino desde cero, utilizando pura electrónica.
Creación de carrito robot desde cero usando mando de PS4
Nivel: Básico 2 horas y 19 min (139 min.)
Construye desde cero un carrito robot con arduino manipulado por un control de PS4 y un teléfono Android.
¿Tienes un proyecto que quieras compartir?
Mándanos tu proyecto o prácticas que quisieras difundir en la comunidad a nuestras redes.
ó
team@codiziapp.com