// Definición de pines
const int ledPins[] = {16, 19, 18, 5, 17};
const int relayPins[] = {21, 22, 4, 15, 2};
const int joyVRX = 34;
const int joyVRY = 35;
const int joySW = 14;
void setup() {
// Configuración de pines de LEDs
for (int i = 0; i < 5; i++) {
pinMode(ledPins[i], OUTPUT);
digitalWrite(ledPins[i], LOW); // Apagar LEDs al inicio
}
// Configuración de pines de relés
for (int i = 0; i < 5; i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], LOW); // Apagar relés al inicio
}
// Configuración del joystick
pinMode(joySW, INPUT_PULLUP); // Botón del joystick
Serial.begin(115200); // Iniciar comunicación serie
}
void loop() {
// Leer el joystick
int vrxValue = analogRead(joyVRX);
int vryValue = analogRead(joyVRY);
int swValue = digitalRead(joySW);
// Imprimir valores del joystick
Serial.print("VRX: ");
Serial.print(vrxValue);
Serial.print(" VRY: ");
Serial.print(vryValue);
Serial.print(" SW: ");
Serial.println(swValue);
// Encender LEDs y relés en función del joystick
if (vrxValue < 1000) { // Mover a la izquierda
digitalWrite(ledPins[0], HIGH);
digitalWrite(relayPins[0], HIGH);
} else {
digitalWrite(ledPins[0], LOW);
digitalWrite(relayPins[0], LOW);
}
if (vrxValue > 3000) { // Mover a la derecha
digitalWrite(ledPins[1], HIGH);
digitalWrite(relayPins[1], HIGH);
} else {
digitalWrite(ledPins[1], LOW);
digitalWrite(relayPins[1], LOW);
}
if (vryValue < 1000) { // Mover hacia abajo
digitalWrite(ledPins[2], HIGH);
digitalWrite(relayPins[2], HIGH);
} else {
digitalWrite(ledPins[2], LOW);
digitalWrite(relayPins[2], LOW);
}
if (vryValue > 3000) { // Mover hacia arriba
digitalWrite(ledPins[3], HIGH);
digitalWrite(relayPins[3], HIGH);
} else {
digitalWrite(ledPins[3], LOW);
digitalWrite(relayPins[3], LOW);
}
// Verificar si el botón del joystick está presionado
if (swValue == LOW) { // Botón presionado
digitalWrite(ledPins[17], HIGH);
digitalWrite(relayPins[2], HIGH);
} else {
digitalWrite(ledPins[17], LOW);
digitalWrite(relayPins[2], LOW);
}
delay(100); // Esperar 100ms
}