#include <Encoder.h>
// Joystick pins
#define JOY_X A0
#define JOY_Y A1
#define JOY_BUTTON 2
// Rotary encoder pins
#define ROTARY_CLK 3
#define ROTARY_DT 4
#define ROTARY_BUTTON 5
// Create the Encoder object
Encoder myEncoder(ROTARY_CLK, ROTARY_DT);
// Variables
long oldPosition = -999;
int joyButtonState = 0;
int rotaryButtonState = 0;
void setup() {
// Set up Serial communication
Serial.begin(9600);
// Pin Modes
pinMode(JOY_BUTTON, INPUT_PULLUP);
pinMode(ROTARY_BUTTON, INPUT_PULLUP);
}
void loop() {
// Read joystick position
int joyX = analogRead(JOY_X);
int joyY = analogRead(JOY_Y);
joyButtonState = digitalRead(JOY_BUTTON);
// Read rotary encoder
long newPosition = myEncoder.read();
rotaryButtonState = digitalRead(ROTARY_BUTTON);
if (newPosition != oldPosition) {
oldPosition = newPosition;
}
// Print joystick and rotary encoder values
Serial.print("Joystick: ");
Serial.print(joyX);
Serial.print(", ");
Serial.print(joyY);
Serial.print(", ");
Serial.print("Button: ");
Serial.print(joyButtonState == HIGH ? "Released" : "Pressed");
Serial.print(", ");
Serial.print("Rotary: ");
Serial.print(newPosition);
Serial.print(", ");
Serial.print("Button: ");
Serial.println(rotaryButtonState == HIGH ? "Released" : "Pressed");
delay(100);
}