const int pinX = 34; // Pin analógico X
const int pinY = 35; // Pin analógico Y
const int pinS = 12;
const int ledIzquierda = 2;
const int ledArriba = 4;
const int ledDerecha = 5;
const int ledAbajo = 18;
// Valores de umbral para el joystick
const int threshold = 100;
void setup() {
// Configurar los pines de los LEDs como salida
pinMode(ledIzquierda, OUTPUT);
pinMode(ledArriba, OUTPUT);
pinMode(ledDerecha, OUTPUT);
pinMode(ledAbajo, OUTPUT);
// Iniciar la comunicación serial (opcional para depuración)
Serial.begin(115200);
}
void loop() {
// Leer los valores del joystick
int valorX = analogRead(pinX);
int valorY = analogRead(pinY);
int valorS = analogRead(pinS);
// Imprimir los valores leídos (opcional para depuración)
Serial.print("X: ");
Serial.print(valorX);
Serial.print(" Y: ");
Serial.println(valorY);
// Apagar todos los LEDs
digitalWrite(ledIzquierda, LOW);
digitalWrite(ledArriba, LOW);
digitalWrite(ledDerecha, LOW);
digitalWrite(ledAbajo, LOW);
// Encender el LED correspondiente según la dirección del joystick
if (valorX > (2048 + threshold)) { // 2048 es el punto medio en un ADC de 12 bits
digitalWrite(ledIzquierda, HIGH);
} else if (valorX < (2048 - threshold)) {
digitalWrite(ledDerecha, HIGH);
}
if (valorY > (2048 + threshold)) {
digitalWrite(ledArriba, HIGH);
} else if (valorY < (2048 - threshold)) {
digitalWrite(ledAbajo, HIGH);
}
if(valorS == 0){
digitalWrite(ledArriba, HIGH);
digitalWrite(ledAbajo, HIGH);
digitalWrite(ledDerecha, HIGH);
digitalWrite(ledIzquierda, HIGH);
}
// Pequeña pausa para evitar lecturas erráticas
delay(100);
}