//Joystick KY-023
int X;
int Y;
int LED_IZQ = 3;
int LED_DER = 5;
int LED_ABA = 6;
int LED_ARR = 9;
int PULSADOR = 10;
int LED_SW = 11;
int SW;
void setup() {
pinMode(LED_IZQ, OUTPUT);
pinMode(LED_DER, OUTPUT);
pinMode(LED_ABA, OUTPUT);
pinMode(LED_ARR, OUTPUT);
pinMode(LED_SW, OUTPUT);
pinMode(PULSADOR, INPUT);
//Entradas analógicas no requieren inicialización
}
void loop() {
X = analogRead(A1);
Y = analogRead(A0);
SW = digitalRead(PULSADOR);
//El Joystick para X e Y genera valores entre 0 (izquierda y abajo)
//y 1023 (derecha y arriba)
//Se deja una zona de reposo entre 480 y 520, porque los potenciómetros
//del Joystick no van a ser totalmente precisos.
if (X >= 0 && X < 480) {
analogWrite(LED_DER, map(X, 0, 480, 255, 0));
} else {
analogWrite(LED_DER, LOW);
}
if (X > 520 && X <= 1023) {
analogWrite(LED_IZQ, map(X, 520, 1023, 0, 255));
} else {
analogWrite(LED_IZQ, LOW);
}
if (Y >= 0 && Y < 480) {
analogWrite(LED_ABA, map(X, 0, 480, 255, 0));
} else {
analogWrite(LED_ABA, LOW);
}
if (Y > 520 && Y <= 1023) {
analogWrite(LED_ARR, map(X, 520, 1023, 0, 255));
} else {
analogWrite(LED_ARR, LOW);
digitalWrite(LED_SW, !SW); //Switch con lógica negativa.
}
}