#include <U8g2lib.h>
#include <Servo.h>
// OLED using software I2C (change pins if needed)
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* SCL=/ A5, / SDA=/ A4, / RESET=*/ U8X8_PIN_NONE);
#define JOY_X A0
#define JOY_Y A1
#define JOY_BTN 2
#define LED_PIN 13
#define SERVO_PIN 9
Servo myServo;
void setup() {
pinMode(JOY_BTN, INPUT_PULLUP);
pinMode(LED_PIN, OUTPUT);
myServo.attach(SERVO_PIN);
u8g2.begin();
}
void loop() {
int xVal = analogRead(JOY_X);
int yVal = analogRead(JOY_Y);
int btnState = digitalRead(JOY_BTN);
int angle = map(xVal, 0, 1023, 0, 180);
myServo.write(angle);
if (yVal > 800) {
digitalWrite(LED_PIN, HIGH);
} else if (yVal < 200) {
digitalWrite(LED_PIN, LOW);
}
u8g2.clearBuffer();
u8g2.setFont(u8g2_font_6x10_tf);
u8g2.setCursor(0, 10);
u8g2.print("Angle: ");
u8g2.print(angle);
u8g2.setCursor(0, 25);
u8g2.print("LED: ");
u8g2.print((digitalRead(LED_PIN)) ? "ON" : "OFF");
u8g2.setCursor(0, 40);
u8g2.print("Button: ");
u8g2.print((btnState == LOW) ? "Pressed" : "Released");
u8g2.sendBuffer();
delay(100);
}