2016/04/23

Arduino Robot v08 Tupperbot (I)

La versión más sencilla del robot arduino, con la estructura de un contenedor hermético de alimentos. Si no dispones de una impresora 3D o de un taller con herramientas para trabajar con madera, considera seriamente esta opción para iniciarte en la robótica con placas Arduino. Solo necesitas un taladro y un cutter para instalar todos los componentes sobre el cuerpo del robot.

En la parte superior colocamos la placa Arduino UNO y la protoboard para realizar conexiones rápidas sin necesidad de soldaduras.


El robot también dispone de una torreta con un sensor de ultrasonidos HC-SR04 montado sobre un servomotor de 180º que le permitirá "mirar" a izquierda y derecha para detectar obstáculos.


En la parte interior instalamos los dos servomotores de rotación continua y el portapilas. Los cables de los servomotores atraviesan la tapa y se conectan a la protoboard. Los cables del portapilas se conectan a un interruptor que alimenta a la placa Arduino UNO con 9 voltios.


El siguiente vídeo muestra al robot ejecutando un sencillo programa que le permite moverse en una trayectoria circular.


Este es el código Arduino que ejecuta el movimiento del vídeo anterior.

//Arduino Robot v09_01 2016/04/23
//Diseño y programación: Antonio Vallecillos, @fotovallegrafia
//Movimiento circular

#include <Servo.h>
// incluimos la librería para controlar los servomotores

Servo servoDER;
// creamos un objeto servo llamado servoDER
Servo servoIZQ;
// creamos un objeto servo llamado servoIZQ

void setup() {
  servoDER.attach(7);
  // el servomotor de la derecha está conectado al pin 7
  servoIZQ.attach(8);
  // el servomotor de la izquierda está conectado al pin 8
}

void loop() {
  servoDER.write(82); 
  /* el servomotor de la derecha gira muy despacio en sentido
  horario (hacia adelante). 0 es la máxima velocidad y 90
  es parado. */
  servoIZQ.write(180);
  /* el servomotor de la izquierda gira muy despacio en sentido 
  antihorario (hacia adelante). 180 es la máxima velocidad y 90
  es parado. */
  delay(100); // pausa de 100 milisegundos
}