/*
Programa que utiliza el módulo joystick KY-023 para encender LEDs y hacer sonar un buzzer
según la dirección del movimiento del joystick.
*/
int X; // Variable para almacenar el valor leído del eje X
int Y; // Variable para almacenar el valor leído del eje Y
int buzzer = 8; // Buzzer conectado al pin digital 8
int LED_DERECHO = 3; // LED derecho conectado al pin digital 3
int LED_ABAJO = 6; // LED de abajo conectado al pin digital 6
void setup() {
pinMode(buzzer, OUTPUT); // Configurar el buzzer como salida
pinMode(LED_DERECHO, OUTPUT); // Configurar el LED derecho como salida
pinMode(LED_ABAJO, OUTPUT); // Configurar el LED de abajo como salida
// Entradas analógicas no requieren inicialización
}
void loop() {
// Leer los valores del joystick
X = analogRead(A0); // Lectura del valor del eje X
Y = analogRead(A1); // Lectura del valor del eje Y
// Controlar el buzzer y los LEDs según la posición del joystick
// Si el joystick se mueve a la derecha (X < 512)
if (X < 512) {
tone(buzzer, 1000); // Suena el buzzer a 1000 Hz
digitalWrite(LED_DERECHO, LOW); // Asegurarse de que el LED esté apagado
}
// Si el joystick se mueve a la izquierda (X > 512)
else if (X > 512) {
digitalWrite(LED_DERECHO, HIGH); // Encender el LED derecho
noTone(buzzer); // Asegurarse de que el buzzer esté apagado
} else {
digitalWrite(LED_DERECHO, LOW); // Apagar el LED derecho
noTone(buzzer); // Apagar el buzzer
}
// Si el joystick se mueve hacia arriba (Y > 512)
if (Y > 512) {
tone(buzzer, 500); // Suena el buzzer a 500 Hz
digitalWrite(LED_ABAJO, LOW); // Asegurarse de que el LED esté apagado
}
// Si el joystick se mueve hacia abajo (Y < 512)
else if (Y < 512) {
digitalWrite(LED_ABAJO, HIGH); // Encender el LED de abajo
noTone(buzzer); // Asegurarse de que el buzzer esté apagado
} else {
digitalWrite(LED_ABAJO, LOW); // Apagar el LED de abajo
noTone(buzzer); // Apagar el buzzer
}
// Pausa breve para estabilidad
delay(10);
}