Files
embedded-labs/include/drivers/JoystickController.h
2025-04-28 18:30:29 +03:00

68 lines
1.1 KiB
C++

#ifndef JOYSTICK_H
#define JOYSTICK_H
#include <Arduino.h>
enum JoystickDirection {
CENTER,
UP,
UP_RIGHT,
RIGHT,
DOWN_RIGHT,
DOWN,
DOWN_LEFT,
LEFT,
UP_LEFT
};
class JoystickController {
private:
uint8_t pinX;
uint8_t pinY;
uint8_t pinButton;
int centerX;
int centerY;
int rawX;
int rawY;
bool buttonState;
int deadzone;
int debounceDelay;
unsigned long lastDebounceTime;
int lastX;
int lastY;
bool lastButtonState;
void readRawValues();
static JoystickController* _instance;
public:
JoystickController(uint8_t xPin, uint8_t yPin, uint8_t buttonPin = 255);
~JoystickController();
void begin();
void calibrate();
void setDeadzone(int value);
void setDebounceDelay(int delayMs);
void tick();
int getRawX();
int getRawY();
int getX();
int getY();
int getOffsetX();
int getOffsetY();
bool isPressed();
bool isCentered();
JoystickDirection getDirection();
String getDirectionString();
int getDistancePercent();
};
#endif