Vamos a construir un robot que se accione al depositar un objeto en su bandeja.
ELEMENTOS:
- Componentes del robot impresos
- Servo
- Sensor de IR
- Placa Arduino
- Cables
Partimos del robot impreso y montado de la versión 1 con MRT.
Incluye el sensor de IR en la carcasa del robot y fija el servo. Puedes seguir las instrucciones en el tutorial https://www.youtube.com/watch?v=KfP_LfUiwdc
Realiza la siguiente implementación con la placa de Arduino:
CODIFICACIÓN
1.- INTRODUCCIÓN
Comentario que describe el programa, autor, fecha etc.
Por ejemplo:
/*
* ROBOT HAMBRIENTO
*
* Autor:
* DICIEMBRE 2019
*
* 1 SERVO
* 1 SENSOR DE INFRARROJOS
*
* El brazo del robot se mueve cuando el sensor IR detecta un objeto
*
*/
2.- SECCIÓN ENCABEZADO
DECLARACIÓN DE OBJETOS, VARIABLES, CONSTANTES:
- Hay que incluir la librería del servo:
Desde menú Programa, elige ‘Incluir librería’ y luego elegir ‘Servo’
En el programa aparecerá la línea de código:
#include <Servo.h>
- Hay que declarar una constante de tipo entero para indicar el pin de Arduino dónde está conectado el sensor IR
const int pinSI = 3;
- Hay que declarar una constante de tipo entero para indicar el pin de Arduino dónde está conectado el sensor IR
const int pinServo = 12;
3.- SECCIÓN SETUP
En esta sección se incluye el código que sólo se ejecuta una vez:
Configuraciones, inicializaciones …
- Configura el pin del sensor de infrarrojos para que se comporte como entrada mediante la función pinMode():
pinMode(pinSI, INPUT);
- Asocia el pin al servo
armServo.attach(pinServo);
- Mueve el servo a la posición inicial
armServo.write(90);
4.- SECCIÓN LOOP
En esta sección vamos a codificar la siguiente secuencia de instrucciones:
- Cuando el sensor detecta un objeto su valor es 0, entonces hay que comerse lo que hay en la bandeja:
- Esperamos dos segundos
- Decimos cuál es el pin del servo
- Subimos el brazo: Mover el servo 10 grados
- Esperamos 300 milisegundos
- Bajamos el brazo:Mover el brazo 90 grados
- Esperamos medio segundos
- Liberamos el brazo
El código correspondiente sería:
//Si hay objeto:
if (digitalRead(pinSI) == 0) {
//esperamos un segundo
delay(1000);
// Asociamos el pin 12 al servo
armServo.attach(12);
// Movemos el motor 10 grados (brazo arriba)
armServo.write(10);
// esperamos 300 ms
delay(300);
// Movemos el motor 90 grados (brazo abajo)
armServo.write(90);
//Esperamos medio segundo
delay(500);
// Liberamos el brazo
armServo.detach();
}
- Compila el programa (traducir nuestro código a 0 y 1 que es lo que entiende el microcontrolador (Arduino). Las teclas:Control+R
- Corrige los errores si los hubiera
- Sube el código a la placa. Las teclas:Control+U
- Comprueba el funcionamiento.
- Si es necesario calibrar el sensor se pueden seguir las instrucciones desde la url: http://diwo.bq.com/programando-un-sensor-infrarrojo-en-bitbloq/