En esta ocasión vamos a programar un servomotor que se posicione en el ángulo que le indiquemos introduciéndolo por teclado.
- ¿Qué es un servomotor?
- Circuito: Cómo conectar un servomotor a Arduino
- Programación con Mblock
- Programación con Arduino IDE
1. ¿Qué es un servomotor?
Un servomotor es un motor cuya posición podemos controlar y mantener en un punto constante en función de un ángulo de posicionamiento.
El servomotor de 180º que vamos a emplear en esta práctica solo puede girar su eje realizando media vuelta, de 0 a 180º.
2. Circuito: Cómo conectar un servomotor a Arduino
Para realizar esta práctica necesitaremos el siguiente material
- 1 Arduino UNO LOG 8431
- 1 Cable USB LOG 7509
- 1 Miniservo LOG 06
- 3 Latiguillos board macho – macho LOG 7519
Conectamos el servomotor a un pin digital de la placa Arduino (no es preciso que sea un pin PWM), por ejemplo el pin 7.
¡Ya sólo nos queda programar! Para programar la placa Arduino puedes utilizar diferentes lenguajes. Nosotros nos vamos a centrar en dos opciones
- MBlock – programación basada en bloques
- Arduino IDE – programación basada en líneas de código
3. Programación con Mblock
El objetivo de este programa es muy sencillo: el personaje panda pregunta al usuario en qué posición debe colocar el servomotor. Cuando se recibe el ángulo, la placa posiciona el motor en ese ángulo.
El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Mblock: primeros pasos« Una vez configurada la tarjeta comenzamos con la programación.
Empezamos programando el objeto panda. Pulsa sobre la pestaña objetos y luego sobre el dibujo del panda. El hacer clic en la bandera, el panda realiza una pregunta (en la sección sensores encontrarás el bloque) incitando al usuario a introducir un ángulo por teclado
A continuación guardamos la respuesta introducida por teclado en una variable que hemos creado para almacenar el ángulo. Redondeamos el ángulo para evitar ángulos con decimales.
Es importante controlar que el ángulo se encuentre entre 0º y 180º, añadimos un bucle que haga repetir la pregunta mientras que el ángulo no esté dentro del rango indicado.
Una vez programada la interacción con el teclado, pasamos a programar el movimiento del motor. Para programar esa acción, pulsamos en dispositivos y en la placa Arduino Uno para empezar a programar.
Al presionar bandera, el programa se quedará a la espera de recibir un ángulo que se encuentre entre los valores 0 y 180º.
Una vez recibido el ángulo correcto posiciona el motor utilizando el bloque «mueve el servo» que localizarás en la sección pines.
Pulsa en la bandera verde y comprueba el resultado.
4. Programación con Arduino IDE
Vamos a realizar el mismo programa, utilizando líneas de código con Arduino IDE El primer paso es configurar la tarjeta, sigue los pasos que te indicamos en «Arduino IDE: primeros pasos«. Una vez configurada la tarjeta comenzamos con la programación. Recuerda que al trabajar con código debemos respetar la sintaxis: Cuidado con las letras mayúsculas y minúsculas y con los signos de puntuación. ¡Son importantes!.
Como hicimos en la práctica con display «lectura de números por teclado» vamos a utilizar la comunicación Serie para solicitar el ángulo al usuario y que éste lo pueda introducir.
Para el control del servomotor, utilizamos la librería Servo.h.
Creamos el objeto servo y lo llamaremos myServo. En setup, asignamos el pin 7 al servo con la instrucción myServo.attach(7) y en loop movemos el servo utilizando la instrucción myServo.write(ángulo).
#include <Servo.h>
int angulo;
Servo myServo; // crea el objeto servomotor
void setup(){
myServo.attach(7); // asigna el pin 7 al servo
Serial.begin(9600); // configura el puerto serie
}
void loop(){
if(Serial.available()>0){ // si el puerto serie esta disponible
angulo=Serial.parseInt(); // lee un dato entero por teclado
if(argulo>0 && angulo<181){ // si el ángulo está entre 0 y 180º
myServo.write(angulo); // mueve el servo al ángulo
delay(15);
}
}
}
Pulsa en el icono subir, y comprueba el resultado.