From 32d339c0fabcb37a3d027ecf7cebb9fddcb946d1 Mon Sep 17 00:00:00 2001 From: David Thurstenson Date: Wed, 19 Oct 2022 23:46:01 -0500 Subject: [PATCH] Added rotary encoder example with debouncer --- examples/rotary-encoder-stemma-debounced.py | 35 +++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 examples/rotary-encoder-stemma-debounced.py diff --git a/examples/rotary-encoder-stemma-debounced.py b/examples/rotary-encoder-stemma-debounced.py new file mode 100644 index 0000000..ca66c3e --- /dev/null +++ b/examples/rotary-encoder-stemma-debounced.py @@ -0,0 +1,35 @@ +# Ref: https://learn.adafruit.com/adafruit-i2c-qt-rotary-encoder/python-circuitpython +import board +from adafruit_seesaw import seesaw, rotaryio, digitalio +import busio +from adafruit_debouncer import Button # Also requires adafruit_ticks to be present in /lib/ + +SDA = board.GP0 +SCL = board.GP1 +i2c = busio.I2C(SCL, SDA) +seesaw = seesaw.Seesaw(i2c, 0x36) + +seesaw.pin_mode(24, seesaw.INPUT_PULLUP) +pin = digitalio.DigitalIO(seesaw, 24) +button = Button(pin) + +encoder = rotaryio.IncrementalEncoder(seesaw) +last_position = None + +while True: + # Update the debouncer. + # Needs to happen very frequently + button.update() + + # negate the position to make clockwise rotation positive + position = -encoder.position + + if position != last_position: + last_position = position + print("Position: {}".format(position)) + + if button.short_count == 1: + print("Button was short pressed once") + + if button.long_press: + print("Button was long pressed") \ No newline at end of file