Introduction: Spidercholo Puppet Arduino

Este fue un proyecto para la materia de Interfaces Físicas, quisimos relacionar el arte y cratividad, con las interfaces físicas, de este modo surgió este proyecto.

Step 1: Descripción

El proyecto consiste en crear un sistema al que se le pueda conectar un títere de hilos y se pueda manipular mostrando al menos 3 secuencias de movimientos. El títere será de madera articulado de manera que pueda mover los brazos, las piernas, la cadera y la cabeza. Los hilos se levantarán con ayuda de servomotores que estarán programados gracias a un Arduino Genuino Uno. En la presentación final del proyecto, la marioneta “bailará” al ritmo de una canción.

Step 2: Planeación

Empezamos planeando el proyecto, lo que queríamos hacer, era un puppet que pudiese bailar alguna canción con secuencias que nosotros mismos le daríamos, de esa manera fuese fácil de personalizar.

Step 3: Materiales

Materiales:

1)Marioneta de madera articulada

2) Arduino Genuino Uno con cables.

3) Protoboard

4) Hilos

5) Cinco Servomotores

6) Base (ya sea de Triplay o Madera)

7) Bocina Pintura, pinceles, papel, tela y demás material para decorar.

Step 4: Construcción

Empezamos por construir el diseño de una polea.

Con los Servomotores e hilos logramos hacer la polea que jalara los hilos y le diera movimiento al títere.

Alineamos los Servos de tal manera que los hilos no se enredaran y se pudiera hacer el cableado sin interferir con el títere y su movimiento, todo sobre una viga de madera.

Utilizaremos un programa sencillo que manipule el comportamiento de 5 servomotores.

Se conectarán los servomotores en un protoboard y el arduino, con un código que las haga moverse de maneras diferentes y quedar en posiciones fijas o con constante movimiento.

Se hará correr una pista o música para complementar y darle sentido a los movimientos que haga el títere.

Step 5: Limitaciones

Los hilos que tendrá la marioneta sólo estarán en las articulaciones principales (codos, rodillas, cuello, cadera) para que la programación sea más sencilla, usar la menor cantidad de servomotores posibles y evitar que se enreden los hilos. Igualmente, nuestra marioneta no se trasladará ni se rotará, se mantendrá en un mismo punto. Tampoco tendrá expresiones faciales, no moverá su boca ni sus ojos.

Otra de las limitaciones que enfrentamos en cuanto a la construcción de la marioneta es el material del que está hecha pues tiene que ser lo suficientemente liviano para que toda la extremidad se mueva por un solo hilo.

Step 6: Codigo

Para controlar la rotación del servomotor se debe enviar un pulso como señal en milisegundos que determina su ángulo de rotación.

Standard de rotación: Para mantener el servomotor en 0 grados debe estar 1 milisegundos en la parte alta del pulso, 20 milisegundos en la parte baja. Para mantener el servomotor en 90 grados debe estar 1.5 milisegundos en la parte alta del pulso, 18.5 milisegundos en la parte baja. Para mantener el servomotor en 180 grados debe estar 2 milisegundos en la parte alta del pulso, 18 milisegundos en la parte baja.

El código es el siguiente:

#include

Servo mder; Servo mizq; Servo pieder; Servo pieizq; Servo cabeza;

int posmder = 0; int posmizq =0; int pospder = 0; int pospizq =0; int poscabeza = 0; int pos =0;

int pos1[ ]={ 180,0,180,30,25 };

int pos2[ ]={ 0,0,0,180,45 };

int pos3[ ]={ 180,0,0,80,0,17 };

int pos4[ ]={ 0,0,0,0,00 };

int pos5[ ]={ 0,0,0,0,0 };

void setup() { mder.attach(9); mizq.attach(12); pieder.attach(10); pieizq.attach(13); cabeza.attach(11); }

void loop() {

for (pos=0; pos <=20; pos += 1 ){

posmder = -45 + pos1[pos] ;

delay (70); pospder = 0 + pos2[pos] ;

delay (100); posmizq = -45 + pos3[pos] ;

delay (80);

pospizq = 0 + pos4[pos] ;

delay (50); poscabeza = -90 + pos5[pos] ;

delay (50); mder.write (posmder); pieder.write (pospder);

mizq.write (posmizq); pieizq.write (pospizq);

cabeza.write (poscabeza); delay(2);

posmder = 90 - pos ; pospder = 180 - pos ;

posmizq = 90 - pos ; pospizq = 180 - pos ;

poscabeza = 90 - pos ; }

}