diff --git a/adafruit_circuitplayground/express.py b/adafruit_circuitplayground/express.py index 21af8d6..ccfb788 100755 --- a/adafruit_circuitplayground/express.py +++ b/adafruit_circuitplayground/express.py @@ -60,6 +60,8 @@ import digitalio import neopixel import touchio +import gamepad + __version__ = "0.0.0-auto.0" __repo__ = "https://github.com/adafruit/Adafruit_CircuitPython_CircuitPlayground.git" @@ -90,6 +92,7 @@ def __init__(self): self._a.switch_to_input(pull=digitalio.Pull.DOWN) self._b = digitalio.DigitalInOut(board.BUTTON_B) self._b.switch_to_input(pull=digitalio.Pull.DOWN) + self.gamepad = gamepad.GamePad(self._a, self._b) # Define switch: self._switch = digitalio.DigitalInOut(board.SLIDE_SWITCH) @@ -479,6 +482,27 @@ def button_b(self): """ return self._b.value + @property + def were_pressed(self): + """Returns a set of the buttons that have been pressed + + .. image :: ../docs/_static/button_b.jpg + :alt: Button B + + .. code-block:: python + + from adafruit_circuitplayground.express import cpx + + while True: + print(cpx.were_pressed) + """ + ret = set() + pressed = self.gamepad.get_pressed() + for button, mask in (('A', 0x01), ('B', 0x02)): + if mask & pressed: + ret.add(button) + return ret + @property def switch(self): """ diff --git a/docs/conf.py b/docs/conf.py index 623fc90..30f104d 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -20,7 +20,7 @@ 'NeoPixel': ('https://circuitpython.readthedocs.io/projects/neopixel/en/latest/', None)} # Libraries we depend on but don't need for generating docs. -autodoc_mock_imports = ["board", "analogio", "digitalio", "neopixel", "adafruit_thermistor", "audioio", "touchio", "adafruit_lis3dh", "busio"] +autodoc_mock_imports = ["board", "analogio", "digitalio", "neopixel", "adafruit_thermistor", "audioio", "touchio", "adafruit_lis3dh", "busio", "gamepad"] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates']