#include <LiquidCrystal_I2C.h>
#include <Arduino.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
constexpr int PIN_Y = A0;
constexpr int PIN_X = A1;
constexpr int PIN_SW = 2;
constexpr int PIN_LED_LEFT = 12;
constexpr int PIN_LED_RIGHT = 8;
constexpr int PIN_LED_TOP = 11;
constexpr int PIN_LED_BOTTOM = 9;
constexpr int PIN_LED_CENTER = 10;
long point = 0;
enum Direction {
LEFT,
RIGHT,
TOP,
BOTTOM,
CENTER,
NONE
} joysticDirection, ledDirection;
void ledOnOff(int pin) {
digitalWrite(pin, HIGH);
delay(500);
digitalWrite(pin, LOW);
}
void setup() {
randomSeed(analogRead(0));
pinMode(PIN_SW, INPUT_PULLUP);
digitalWrite(PIN_SW, HIGH);
Serial.begin(115200);
lcd.init();
lcd.backlight();
lcd.begin(16, 2);
pinMode(PIN_LED_LEFT, OUTPUT);
pinMode(PIN_LED_RIGHT, OUTPUT);
pinMode(PIN_LED_TOP, OUTPUT);
pinMode(PIN_LED_BOTTOM,OUTPUT);
pinMode(PIN_LED_CENTER,OUTPUT);
}
void loop() {
lcd.setCursor(1, 0);
lcd.print("TOTAL PKT. " + String(point));
ledDirection = random(0, 5);
switch (ledDirection) {
case LEFT:
ledOnOff(PIN_LED_LEFT);
break;
case RIGHT:
ledOnOff(PIN_LED_RIGHT);
break;
case TOP:
ledOnOff(PIN_LED_TOP);
break;
case BOTTOM:
ledOnOff(PIN_LED_BOTTOM);
break;
case CENTER:
ledOnOff(PIN_LED_CENTER);
break;
}
// delay(1500);
int X = (analogRead(PIN_X) - 512) * -1;
int Y = analogRead(PIN_Y) - 512;
if (X > 0 && Y == 0) joysticDirection = RIGHT;
else if (X < 0 && Y == 0) joysticDirection = LEFT;
else if (Y > 0 && X == 0) joysticDirection = TOP;
else if (Y < 0 && X == 0) joysticDirection = BOTTOM;
else if (Y == 0 && X == 0 && digitalRead(PIN_SW) == LOW) joysticDirection = CENTER;
else joysticDirection = NONE;
if (ledDirection == joysticDirection) point += 1;
Serial.println(ledDirection);
Serial.println(joysticDirection);
delay(500);
}