Creada el 12-09-2007
versión resistiva.
PALANCA DE JUEGOS.
Una palanca de mando o joystick es un dispositivo que controla dos o tres ejes. Cada día está más presente en muchos ambientes laborales, aunque su presencia es más conocida desde los años 80, en la mayoría de los sistemas de juegos o videoconsolas. Es una herramienta de trabajo, cómoda y fácil de usar que, se usa desde una computadora o videoconsola, pasando por grúas, aviones de caza, al transbordador espacial.
Pueden encontrarse distintos tipos de estas palancas o mandos de dirección con diferentes aplicaciones a los que se les añaden pulsadores (digitales) o actuadores resistivos (analógicos) para diversas aplicaciones. El digital lo dejaremos para otra ocasión, ahora nos centraremos con el analógico. Este, consiste en la obtención de las coordenadas de una posición en un tablero, mediante el posicionamiento de una palanca capaz de moverse en cualquier dirección (sobre dos ejes de dos potenciómetros) alcanzando los diferentes puntos del tablero.
Para obtener un mecanismo que registre estos valores, se disponen dos potenciómetros en dos caras adyacentes de un cubo, de modo que los ejes se crucen en el punto central del cubo, como se aprecia en la imagen de arriba.
EL CIRCUITO.
Se conectan cuatro cables a la tarjeta Arduino. En primer lugar debemos unir los terminales de cada potenciómetro de la siguiente forma; el extremo 1 de un potenciómetro con el extremo 3 del otro potenciómetro, luego el extremo 3 del primer potenciómetro con el extremo 1 del segundo potenciómetro.
El primero va a tierra desde uno de los terminales (extremos 1 del primer potenciómetro). El segundo va desde la salida de 5 voltios hacia el otro externo terminal del primer potenciómetro. EL tercero va desde la entrada analógica #2 hasta el terminal medio del primer potenciómetro y el cuarto va de la entrada analógica #3 hasta el terminal medio del segundo potenciómetro.
Fig. 3 Detalles mecánicos de los potenciómetros.
EL LISTADO.
Este es el listado que cumple lo descrito, los comentarios revelan lo que hace cada línea y las instrucciones.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
/* Analog Read * ------------------ * * Enciende y apaga un LED (light emitting diode) conectado al pin digital #13. * La cantidad de tiempo que el LED parpadeará depende del valor obtenido * mediante analogRead(). En este caso el pin analógico #2, se * encuentra conectado un potenciómetro. * ------------ * Created 1 December 2005 * copyleft 2005 DojoDave <http://www.0j0.org> * http://arduino.berlios.de * * Modificado para usar 2 pot. como mando joystick a modo de palanca de juegos * por V. García el 01-05-2.008 * * El valor de los dos potenciometros debe estar sobre los 25K. * */ int potPin = 2; // seleccionar el pin de entrada analógico 2 para el potenciómetro eje X int potPin2 = 3; // seleccionar el pin de entrada analógico 3 para el potenciómetro eje Y int ledPin = 13; // seleccionar el pin de salida digital 13 para el LED eje X int ledPin2 = 12; // seleccionar el pin de salida digital 12 para el LED eje Y int val1 = 0; // variable para almacenar el valor capturado desde el sensor X int val2 = 0; // variable para almacenar el valor capturado desde el sensor Y void setup() { pinMode(ledPin, OUTPUT); // declara el ledPin en modo salida pinMode(ledPin2, OUTPUT); // declara el ledPin en modo salida Serial.begin(9600); // sets the serial port to 9600 Serial.println("Prueba de comunicacion Palanca juegos por Puerto USB"); } void loop() { // lee primer potenciometro eje X val1 = analogRead(potPin); // lee el valor del sensor X // -- Serial.print(" X: "); // prints a space between the numbers Serial.print(val1, DEC); // prints the value read Serial.print("\r\n"); // caracter cambio de linea y retorno // -- digitalWrite(ledPin, HIGH); // enciende LED // detiene el programa el tiempo determinado por la variable delay(200); // retardo de 200 ms digitalWrite(ledPin, LOW); // apaga el LED delay(200); // lee segundo potenciometro eje Y val2 = analogRead(potPin2); // lee el valor del sensor Y Serial.print(" Y: "); // prints a space between the numbers Serial.print(val2, DEC); // prints the value read Serial.print("\r\n"); // digitalWrite(ledPin2, HIGH); // enciende LED delay(200); // retardo de 200 ms digitalWrite(ledPin2, LOW); // apaga el LED // delay(200); Serial.print("\r\n"); // separa grupos XY } |
El lector, con unos pocos cambios puede adaptar este listado a sus proyectos.
Como siempre, comentarios, criticas y sugerencias para mejorar este artículo, son bienvenidos y apreciados.