// Pines analógicos
const int VRy = 0; // A0
const int VRx = 1; // A1
// Pines digitales
const int ledVRy1 = 9; // arriba
const int ledVRy2 = 10; // abajo
const int ledVRx1 = 11; // derecha
const int ledVRx2 = 12; // izquierda
int lecturaX = 0;
int lecturaY = 0;
unsigned long tiempoEncendidoX = 0;
unsigned long tiempoEncendidoY = 0;
const unsigned long duracionEncendido = 5000; // 5 segundos
bool ledArribaEncendido = false;
void setup() {
Serial.begin(9600);
pinMode(ledVRx1, OUTPUT);
pinMode(ledVRx2, OUTPUT);
pinMode(ledVRy1, OUTPUT);
pinMode(ledVRy2, OUTPUT);
// Encender el LED de abajo siempre
digitalWrite(ledVRy2, HIGH);
}
void loop() {
// Leer el eje X
lecturaX = analogRead(VRx);
if (lecturaX < 350) {
digitalWrite(ledVRx1, HIGH); // LED derecha encendido
tiempoEncendidoX = millis(); // Guardar tiempo de encendido
} else if (lecturaX > 700) {
digitalWrite(ledVRx2, HIGH); // LED izquierda encendido
tiempoEncendidoX = millis(); // Guardar tiempo de encendido
} else {
// Comprobar si los LEDs laterales deben apagarse
if (millis() - tiempoEncendidoX >= duracionEncendido) {
digitalWrite(ledVRx1, LOW); // LED derecha apagado
digitalWrite(ledVRx2, LOW); // LED izquierda apagado
}
}
// Leer el eje Y
lecturaY = analogRead(VRy);
if (lecturaY < 350) {
// Comenzar a contar el tiempo si se presiona arriba
if (!ledArribaEncendido) {
tiempoEncendidoY = millis(); // Guardar tiempo de inicio
}
// Verificar si el tiempo de presión ha alcanzado los 5 segundos
if (millis() - tiempoEncendidoY >= duracionEncendido) {
digitalWrite(ledVRy1, HIGH); // Encender LED arriba
ledArribaEncendido = true; // Marcar que el LED está encendido
}
} else {
// Reiniciar estado del LED de arriba
digitalWrite(ledVRy1, LOW); // LED arriba apagado
ledArribaEncendido = false; // Reiniciar estado
}
// Imprimir en consola
Serial.print("Lectura Eje X: ");
Serial.println(lecturaX);
Serial.print("Lectura Eje Y: ");
Serial.println(lecturaY);
delay(100); // Reducir el delay para una respuesta más rápida
}