#define VERT_PIN 25
#define HORZ_PIN 33
#define SEL_PIN 32
#define LED_CENTER 27
#define LED_UP 12
#define LED_LEFT 13
#define LED_DOWN 14
#define LED_RIGHT 26
void setup() {
Serial.begin(115200);
pinMode(VERT_PIN, INPUT);
pinMode(HORZ_PIN, INPUT);
pinMode(SEL_PIN, INPUT_PULLUP);
pinMode(LED_CENTER, OUTPUT);
pinMode(LED_UP, OUTPUT);
pinMode(LED_LEFT, OUTPUT);
pinMode(LED_DOWN, OUTPUT);
pinMode(LED_RIGHT, OUTPUT);
// Turn off all LEDs initially
turnOffAllLEDs();
}
void loop() {
int vert = analogRead(VERT_PIN);
int horz = analogRead(HORZ_PIN);
bool selPressed = digitalRead(SEL_PIN) == LOW;
turnOffAllLEDs();
// Center LED glows when button is pressed
if (selPressed) {
digitalWrite(LED_CENTER, HIGH);
}
// Joystick direction detection
if (vert > 2048) {
digitalWrite(LED_UP, HIGH); // Up
}
else if (vert < 2048) {
digitalWrite(LED_DOWN, HIGH); // Down
}
if (horz > 2048) {
digitalWrite(LED_RIGHT, HIGH); // Left
}
else if (horz < 2048) {
digitalWrite(LED_LEFT, HIGH); // Right
}
// Debugging output
Serial.print("Vertical: ");
Serial.print(vert);
Serial.print(", Horizontal: ");
Serial.print(horz);
Serial.print(", Select: ");
Serial.println(selPressed);
delay(100);
}
void turnOffAllLEDs() {
digitalWrite(LED_CENTER, LOW);
digitalWrite(LED_UP, LOW);
digitalWrite(LED_LEFT, LOW);
digitalWrite(LED_DOWN, LOW);
digitalWrite(LED_RIGHT, LOW);
}