Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update hexpansion button chord to also control the LEDs #110

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 24 additions & 6 deletions modules/frontboards/twentyfour.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,14 @@ async def background_task(self):
display.gfx_init()

button_states = {button: False for button in self.BUTTON_PINS.keys()}
hexpansion_states = {1: None, 2: None, 3: None, 4: None, 5: None, 6: None}
hexpansion_states = {
1: {"inserted": None, "removed": None},
2: {"inserted": None, "removed": None},
3: {"inserted": None, "removed": None},
4: {"inserted": None, "removed": None},
5: {"inserted": None, "removed": None},
6: {"inserted": None, "removed": None},
}
while True:
booped = not machine.Pin(0, mode=machine.Pin.IN).value()
tildagonos.read_egpios()
Expand All @@ -43,16 +50,27 @@ async def background_task(self):
for i, gpio in enumerate(
map(lambda i: self.BUTTON_PINS[BUTTONS[i]], "ABCDEF")
):
state = hexpansion_states[i + 1]
inserted_state = hexpansion_states[i + 1]['inserted']
removed_state = hexpansion_states[i + 1]['removed']
button_down = not tildagonos.check_egpio_state(
gpio, readgpios=False
)
# print(i, now, state)
if button_down and state is None:
hexpansion_states[i + 1] = now
if (
button_down
and inserted_state is None
and time.ticks_diff(now, removed_state) > 1000
):
hexpansion_states[i + 1]['inserted'] = now
hexpansion_states[i + 1]['removed'] = None
await eventbus.emit_async(HexpansionInsertionEvent(port=i + 1))
elif state and time.ticks_diff(now, state) > 4000:
hexpansion_states[i + 1] = None
elif (
button_down
and inserted_state
and time.ticks_diff(now, inserted_state) > 1000
):
hexpansion_states[i + 1]['inserted'] = None
hexpansion_states[i + 1]['removed'] = now
# print(f"Removing {i}")
await eventbus.emit_async(HexpansionRemovalEvent(port=i + 1))
else:
Expand Down
9 changes: 0 additions & 9 deletions modules/system/hexpansion/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,13 @@
RequestStopAppEvent,
)
from tildagonos import EPIN_ND_A, EPIN_ND_B, EPIN_ND_C, EPIN_ND_D, EPIN_ND_E, EPIN_ND_F
from tildagonos import led_colours
from tildagonos import tildagonos

from system.eventbus import eventbus
from machine import I2C
from events.input import Buttons
import vfs
import sys
import settings


class HexpansionManagerApp(app.App):
Expand Down Expand Up @@ -236,13 +234,6 @@ async def background_task(self):
hexpansion_present = not tildagonos.check_egpio_state(
n, readgpios=False
)
if hexpansion_present:
if settings.get("pattern_mirror_hexpansions", False):
tildagonos.leds[13 + i] = tildagonos.leds[1 + (i * 2)]
else:
tildagonos.leds[13 + i] = led_colours[i]
else:
tildagonos.leds[13 + i] = (0, 0, 0)
if hexpansion_present and not hexpansion_plugin_states[i]:
hexpansion_plugin_states[i] = True
eventbus.emit(HexpansionInsertionEvent(port=i + 1))
Expand Down
10 changes: 10 additions & 0 deletions modules/system/hexpansion/events.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
from events import Event
import settings
from tildagonos import tildagonos
from tildagonos import led_colours


class HexpansionEvent(Event):
Expand All @@ -8,11 +11,18 @@ def __init__(self, port):

class HexpansionInsertionEvent(HexpansionEvent):
def __str__(self):
if settings.get("pattern_mirror_hexpansions", False):
tildagonos.leds[13 + self.port - 1] = tildagonos.leds[
1 + ((self.port - 1) * 2)
]
else:
tildagonos.leds[13 + self.port - 1] = led_colours[self.port - 1]
return f"Hexpansion inserted in port: {self.port}"


class HexpansionRemovalEvent(HexpansionEvent):
def __str__(self):
tildagonos.leds[13 + self.port - 1] = (0, 0, 0)
return f"Hexpansion removed from port: {self.port}"


Expand Down
Loading