Diferència entre revisions de la pàgina «Joystick»
(Hi ha 11 revisions intermèdies del mateix usuari que no es mostren) | |||
Línia 1: | Línia 1: | ||
− | '''Descripción general''' | + | =='''Descripción general'''== |
El '''joystick''' analógico es un elemento de control que su forma es redonda y utiliza potenciómetros para leer continuamente el estado del eje (derecha, izquierda, arriba y abajo) y además tiene un botón de acción (que es similar al R3 del joystick de un mando de la PlayStation).Los joysticks analógicos como el que estamos describiendo son los más nuevos ya que también existen los digitales. | El '''joystick''' analógico es un elemento de control que su forma es redonda y utiliza potenciómetros para leer continuamente el estado del eje (derecha, izquierda, arriba y abajo) y además tiene un botón de acción (que es similar al R3 del joystick de un mando de la PlayStation).Los joysticks analógicos como el que estamos describiendo son los más nuevos ya que también existen los digitales. | ||
Línia 8: | Línia 8: | ||
4.- Pin del eje Y. <br> | 4.- Pin del eje Y. <br> | ||
5.- Pin del botón accionador <br> | 5.- Pin del botón accionador <br> | ||
− | |||
− | |||
<br> | <br> | ||
− | ¿Cómo conectar el joystick al arduino? | + | =='''¿Cómo conectar el joystick al arduino?''' == |
• El pin de tierra lo conectamos al GND del arduino. <br> | • El pin de tierra lo conectamos al GND del arduino. <br> | ||
• El de corriente a alguno de 5V del arduino. <br> | • El de corriente a alguno de 5V del arduino. <br> | ||
Línia 18: | Línia 16: | ||
• El de la Y a cualquier pin analógico del arduino. <br> | • El de la Y a cualquier pin analógico del arduino. <br> | ||
• El del botón accionador a cualquier pin digital del arduino. <br> | • El del botón accionador a cualquier pin digital del arduino. <br> | ||
+ | [[Fitxer:FritzArd.png]] | ||
+ | |||
+ | '''Imagen de JoyStick:''' <br> | ||
+ | [[Fitxer:Frit.jpg|250px]] | ||
− | Código ejemplo | + | =='''Código ejemplo'''== |
− | |||
Mapeamos el joystick de tal forma que cuando suba nos diga “up” cuando baje nos diga “down” que cuando vaya a la izquierda nos indique “right”, cuando vaya hacia la derecha que nos indique “left”.<br> | Mapeamos el joystick de tal forma que cuando suba nos diga “up” cuando baje nos diga “down” que cuando vaya a la izquierda nos indique “right”, cuando vaya hacia la derecha que nos indique “left”.<br> | ||
¿Cómo se mapea?<br> | ¿Cómo se mapea?<br> | ||
+ | <pre> | ||
+ | // Variables que usaremos para almacenar los valores del joystick | ||
+ | int x=0, y=0, boton=0; | ||
+ | String dir = ""; | ||
+ | void setup() { | ||
+ | // Inicializamos el serial a 9600 de velocidad. | ||
+ | Serial.begin(9600); | ||
+ | } | ||
− | + | String direccion(int x, int y){ | |
+ | // Comprovamos a que direccion apunta el joystick dependiendo de los valores de X e Y | ||
+ | if(y>=0 && y<=538 && x>=80 && x<=1023) dir = "up"; | ||
+ | else if(y>=543 && y<=1023 && x>=0 && x<=1023) dir = "down"; | ||
+ | else if(x>=0 && x<=498 && y>=440 && y<=1023 || y==0) dir = "left"; | ||
+ | else if(x>=503 && x<=1023 && y>=72 && y<=844) dir = "right"; | ||
+ | else dir = "listening"; | ||
− | + | return dir; | |
+ | } | ||
− | dir = ""; | + | void loop() { |
− | x = | + | // Inicializamos la variable de direccion <br> |
− | y = analogRead(1); | + | dir = ""; <br> |
− | boton = digitalRead(13); | + | |
− | + | // Guardamos en las siguientes variables las entradas del joystick | |
+ | x = analogRead(0); | ||
+ | y = analogRead(1); | ||
+ | boton = digitalRead(13); | ||
− | + | ||
+ | // Guardamos el valor de la funcion direccion en la variable dir <br> | ||
+ | dir=direccion(x,y); | ||
+ | // Printamos en una ventana de nuestro PC los valores de X, Y, si el boton esta o no pulsado y la direccion a la que apunta el joystick | ||
+ | Serial.print(x); | ||
+ | Serial.print("=x y="); | ||
+ | Serial.print(y); <br> | ||
+ | Serial.print(" boton="); | ||
+ | Serial.print(boton); <br> | ||
+ | Serial.print(" direccion="); | ||
+ | Serial.println(dir); | ||
− | |||
− | |||
− | + | delay(100); | |
− | + | ||
− | + | } | |
− | + | </pre> | |
− | |||
− |
Revisió de 14:55, 30 maig 2016
Descripción general
El joystick analógico es un elemento de control que su forma es redonda y utiliza potenciómetros para leer continuamente el estado del eje (derecha, izquierda, arriba y abajo) y además tiene un botón de acción (que es similar al R3 del joystick de un mando de la PlayStation).Los joysticks analógicos como el que estamos describiendo son los más nuevos ya que también existen los digitales.
Tiene 5 pines de conexión:
1.- El de tierra
2.- El que hace que el joystick reciba corriente.
3.- Pin del eje X.
4.- Pin del eje Y.
5.- Pin del botón accionador
¿Cómo conectar el joystick al arduino?
• El pin de tierra lo conectamos al GND del arduino.
• El de corriente a alguno de 5V del arduino.
• El de la X se pone en un pin analógico del arduino (cualquiera analógico sirve).
• El de la Y a cualquier pin analógico del arduino.
• El del botón accionador a cualquier pin digital del arduino.
Código ejemplo
Mapeamos el joystick de tal forma que cuando suba nos diga “up” cuando baje nos diga “down” que cuando vaya a la izquierda nos indique “right”, cuando vaya hacia la derecha que nos indique “left”.
¿Cómo se mapea?
// Variables que usaremos para almacenar los valores del joystick int x=0, y=0, boton=0; String dir = ""; void setup() { // Inicializamos el serial a 9600 de velocidad. Serial.begin(9600); } String direccion(int x, int y){ // Comprovamos a que direccion apunta el joystick dependiendo de los valores de X e Y if(y>=0 && y<=538 && x>=80 && x<=1023) dir = "up"; else if(y>=543 && y<=1023 && x>=0 && x<=1023) dir = "down"; else if(x>=0 && x<=498 && y>=440 && y<=1023 || y==0) dir = "left"; else if(x>=503 && x<=1023 && y>=72 && y<=844) dir = "right"; else dir = "listening"; return dir; } void loop() { // Inicializamos la variable de direccion <br> dir = ""; <br> // Guardamos en las siguientes variables las entradas del joystick x = analogRead(0); y = analogRead(1); boton = digitalRead(13); // Guardamos el valor de la funcion direccion en la variable dir <br> dir=direccion(x,y); // Printamos en una ventana de nuestro PC los valores de X, Y, si el boton esta o no pulsado y la direccion a la que apunta el joystick Serial.print(x); Serial.print("=x y="); Serial.print(y); <br> Serial.print(" boton="); Serial.print(boton); <br> Serial.print(" direccion="); Serial.println(dir); delay(100); }