TecnoKent

Departamento de Tecnología – I.E.S. Victoria Kent (Elche)

Proyecto Arduino: LABERINTO DE BOLAS OSCILANTE

Posted by Antonio en mayo 24, 2016

Laberinto Arduino 2

Diseño realizado con SketchUp

El proyecto consiste en el típico juego de laberinto con una bola en el que hay que hacer un recorrido desde la salida hasta la meta sorteando los agujeros.

El control de la bola se hace inclinando la superficie del laberinto, para lo cual habrá varias opciones de menor a mayor dificultad:

  1. Controles manuales mecánicos.
  2. Control mediante dos servos movidos mediante joystick. El control se realiza con Arduino.
  3. Control mediante dos servos movidos mediante ratón. El control se realiza con Arduino.
  4. Control mediante dos servos movidos mediante el acelerómetro del teléfono móvil. El control se realiza mediante Arduino y su conexión por bluetooth al móvil. Habrá que crear una app para Android.

La opción de control elegida ha sido la segunda, realizando el programa con el IDE de Arduino, lo que permite que el juego funcione sin necesidad de tenerlo siempre conectado al ordenador, como pasaría si se programase con Scratch para Arduino.

Continúa leyendo (código y vídeo).

VÍDEO

FUNCIONAMIENTO

Mediante un joystick, controlaremos el ángulo de rotación de dos microservos de forma proporcional al grado de accionamiento de la palanca. Al presionar la palanca hacia abajo, centraremos la plataforma.

El joystick está formado por dos potenciómetros (eje X y eje Y) y por un pulsador (palanca hacia adentro), de manera que vamos a conectar las patillas VRx y VRy a las entradas analógicas A1 y A2 de nuestra placa Arduino y la SW a una entrada digital (en nuestro caso, la 4). Las dos restantes son para la alimentación.

En el esquema se pueden ver perfectamente estas conexiones.

Conexiones joystick fritzing

CÓDIGO ARDUINO

/*Control de dos potenciómetros con un joystick. Ángulo de los servos proporcional al
 * desplazamiento de la palanca. Cuando ésta se encuentra en el centro, el ángulo de
 * ambos servos será 90º.
 */

#include<Servo.h>

Servo servo1;                   // Crear un objeto tipo Servo llamado servo1
Servo servo2;                   // Crear un objeto tipo Servo llamado servo2
int EjeX = 1;                     // Conexión analógica A1 para el eje X
int EjeY = 2;                     // Conexión analógica A2 para el eje Y
int boton=4;                    // Conexión del botón de lal palanca al pin digital 4

void setup() 
{
servo1.attach(5);               // Conexión servo1 al pin 5 para eje X
servo2.attach(6);               // Conexión servo2 al pin 6 para eje Y
pinMode( boton, INPUT_PULLUP) ; // Conexión botón joystick al pin 4
}

void loop() 
{
int x = analogRead(EjeX);              //Lectura de posición palanca eje x entre 0 y 1023
int xmapped = map(x,0,1023,60,71);   //Mapeado de posición x entre 30 y 150º
servo1.write(xmapped);               //Movimiento servo1
delay(5);

int y = analogRead(EjeY);              //Lectura de posición palanca eje y entre 0 y 1023
int ymapped = map(y,0,1023,120,75);   //Mapeado de posición y entre 30 y 150º
servo2.write(ymapped);               //Movimiento servo2
delay(5);

if ( ! digitalRead(boton))     //Al pulsar el joystick, centramos los dos servos
     {
     delay(20);
     servo1.write(65);
     servo2.write(98);
}
}

NOTA IMPORTANTE

Nótese que las variables x e y se han mapeado para limitar el movimiento de los servos (ejemplo: x varía entre 0 y 1023. Ese valor se mapea en la variable xmapped entre 60 y 71º de giro. El valor medio, aproximadamente 66º, corresponde a la posición centrada. En función de como construyas tu laberinto, tendrás que ir probando valores para que el movimiento no sea demasiado brusco).

Una respuesta to “Proyecto Arduino: LABERINTO DE BOLAS OSCILANTE”

  1. tecnofoia said

    Muy buen trabajo y con código arduino. ¡¡Enhorabuena compañeros¡¡

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: