Skip to content

Instantly share code, notes, and snippets.

@jepler
Created December 11, 2019 20:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jepler/025f16543fd35e35bc388cd1de41d707 to your computer and use it in GitHub Desktop.
Save jepler/025f16543fd35e35bc388cd1de41d707 to your computer and use it in GitHub Desktop.
import analogio
import board
class AnalogJoystick:
def __init__(self, pin_x=None, pin_y=None, x_invert=False, y_invert=False, deadzone=8000):
self._x = analogio.AnalogIn(pin_x or board.JOYSTICK_X)
self._y = analogio.AnalogIn(pin_y or board.JOYSTICK_Y)
self.x_invert = x_invert
self.y_invert = y_invert
self.deadzone = deadzone
self.recenter()
self.poll()
def poll(self):
self.x = (self._x.value - self.x_center) * (-1 if self.x_invert else 1)
self.y = (self._y.value - self.y_center) * (-1 if self.y_invert else 1)
return [self.up, self.down, self.left, self.right]
@property
def up(self):
return self.x > self.deadzone
@property
def down(self):
return self.x < -self.deadzone
@property
def left(self):
return self.y < -self.deadzone
@property
def right(self):
return self.y > self.deadzone
def recenter(self):
self.x_center = self._x.value
self.y_center = self._y.value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment