Para esto empezamos conectando el joystick a nuestro sistema con la matriz y el Arduino de la practica anterior. Conectamos el GND con el GND del Arduino, el Vcc con 5v, y el Vrx y Vry con pies analógicos (Vrx con A0 y Vy con A1).
Luego continuamos con la programación. Comenzamos creando las variables respectivas para la lectura del movimiento del joystick tanto en x como en y.
int ladoy = A0;
int ladox = A1;
A continuación,creamos dos variables mas que almacenaran los datos dados por ladox y ladoy respectivamente:
int valor1;
int valor2;
Después agregamos cuatro variables booleanas, variables que pueden tener dos estados: verdadero o falso; cuyos valores dependerán de la posición a la que se haya dirigido el joystick la última vez.
boolean arriba=true;
boolean abajo=false;
boolean derecha=false;
boolean izquierda=false;
Finalmente creamos las variables posx y posy, las cuales indicaran que LED sera el que se prenda.
En el void setup, declaramos
donde nos podemos dar cuenta que empezamos con la frecuencia (serial.begin) de 9600; y despues declaramos como output a los pines de 2 a 17 (salida); del 2 al 9 en estado apagado al igual que de 10 a 17 (se escribe HIGH ya que se conoce que el inverso "LOW" se mantenían en estado prendido)
Por consiguiente y final del void setup, colocamos que la posx y posY estan apagadas.
En el void loop colocamos directamente lo que realizara el joystick.
Por consiguiente y final del void setup, colocamos que la posx y posY estan apagadas.
En el void loop colocamos directamente lo que realizara el joystick.
"void loop() {
valor1 = analogRead(ladox);
valor2 = analogRead(ladoy);
Serial.print("X: ");
Serial.print(valor1);
Serial.print(" - ");
Serial.print("Y: ");
Serial.println(valor2);
digitalWrite(posX, LOW);
digitalWrite(posY, HIGH);
if (valor1 > 700) {
derecha= true;
izquierda= false;
arriba= false;
abajo= false;
} else {
if (valor1 < 400) {
derecha= false;
izquierda= true;
arriba= false;
abajo= false;
}
}
if (valor2 > 700) {
derecha= false;
izquierda= false;
arriba= true;
abajo= false;
} else {
if (valor2 < 400) {
derecha= false;
izquierda= false;
arriba= false;
abajo = true;
}
}
if (derecha) {
if (posX == 9)
posX = 2;
else
posX++;//posX = posX + 1;
} else {
if (izquierda) {
if (posX == 2)
posX = 9;
else
posX--;//posX = posX - 1;
}
}
if (arriba) {
if (posY == 17)
posY = 10;
else
posY++;
} else {
if (abajo) {
if (posY == 10)
posY = 17;
else
posY--;
}
}
digitalWrite(posX, HIGH);
digitalWrite(posY, LOW);
delay(250);
}"
valor1 = analogRead(ladox);
valor2 = analogRead(ladoy);
Serial.print("X: ");
Serial.print(valor1);
Serial.print(" - ");
Serial.print("Y: ");
Serial.println(valor2);
digitalWrite(posX, LOW);
digitalWrite(posY, HIGH);
if (valor1 > 700) {
derecha= true;
izquierda= false;
arriba= false;
abajo= false;
} else {
if (valor1 < 400) {
derecha= false;
izquierda= true;
arriba= false;
abajo= false;
}
}
if (valor2 > 700) {
derecha= false;
izquierda= false;
arriba= true;
abajo= false;
} else {
if (valor2 < 400) {
derecha= false;
izquierda= false;
arriba= false;
abajo = true;
}
}
if (derecha) {
if (posX == 9)
posX = 2;
else
posX++;//posX = posX + 1;
} else {
if (izquierda) {
if (posX == 2)
posX = 9;
else
posX--;//posX = posX - 1;
}
}
if (arriba) {
if (posY == 17)
posY = 10;
else
posY++;
} else {
if (abajo) {
if (posY == 10)
posY = 17;
else
posY--;
}
}
digitalWrite(posX, HIGH);
digitalWrite(posY, LOW);
delay(250);
}"