Skip to content

Commit bcf687b

Browse files
committed
modules/startup/dinmeter: Support CardKB as input device.
Signed-off-by: lbuque <[email protected]>
1 parent af934e5 commit bcf687b

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed

m5stack/modules/startup/dinmeter/apps/app_list.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,9 @@ def _btn_always_event_handler(self, event):
276276
async def _keycode_enter_event_handler(self, fw):
277277
self._btn_once_event_handler(None)
278278

279+
async def _keycode_ctrl_event_handler(self, fw):
280+
self._btn_always_event_handler(None)
281+
279282
async def _keycode_back_event_handler(self, fw):
280283
pass
281284

m5stack/modules/startup/dinmeter/framework.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
import gc
44
import asyncio
55
from hardware import Rotary
6+
from machine import I2C, Pin
7+
from unit import CardKBUnit, KeyCode
8+
9+
10+
class KeyEvent:
11+
key = 0
12+
status = False
613

714

815
class Framework:
@@ -49,6 +56,13 @@ async def run(self):
4956
self._app_selector.select(self._launcher)
5057
self._launcher.start()
5158

59+
self.i2c0 = I2C(0, scl=Pin(15), sda=Pin(13), freq=100000)
60+
self._kb_status = False
61+
if 0x5F in self.i2c0.scan():
62+
self._kb = CardKBUnit(self.i2c0)
63+
self._event = KeyEvent()
64+
self._kb_status = True
65+
5266
while True:
5367
M5.update()
5468

@@ -65,6 +79,11 @@ async def run(self):
6579
app.stop()
6680
self._app_selector.select(self._launcher)
6781
self._launcher.start()
82+
elif M5.BtnA.wasDoubleClicked():
83+
M5.Speaker.tone(4500, 50)
84+
app = self._app_selector.current()
85+
if hasattr(app, "_keycode_ctrl_event_handler"):
86+
await app._keycode_ctrl_event_handler(self)
6887

6988
if rotary.get_rotary_status():
7089
direction = rotary.get_rotary_increments()
@@ -79,8 +98,32 @@ async def run(self):
7998
if hasattr(app, "_keycode_dpad_up_event_handler"):
8099
await app._keycode_dpad_up_event_handler(self)
81100

101+
if self._kb_status:
102+
if self._kb.is_pressed():
103+
M5.Speaker.tone(3500, 50)
104+
self._event.key = self._kb.get_key()
105+
self._event.status = False
106+
await self.handle_input(self._event)
107+
82108
await asyncio.sleep_ms(10)
83109

110+
async def handle_input(self, event: KeyEvent):
111+
if event.key is KeyCode.KEYCODE_RIGHT:
112+
M5.Speaker.tone(3500, 50)
113+
app = self._app_selector.current()
114+
if hasattr(app, "_keycode_dpad_up_event_handler"):
115+
await app._keycode_dpad_up_event_handler(self)
116+
event.status = True
117+
if KeyCode.KEYCODE_LEFT == event.key:
118+
app = self._app_selector.current()
119+
if hasattr(app, "_keycode_dpad_down_event_handler"):
120+
await app._keycode_dpad_down_event_handler(self)
121+
event.status = True
122+
if event.status == False:
123+
app = self._app_selector.current()
124+
if hasattr(app, "_kb_event_handler"):
125+
await app._kb_event_handler(event, self)
126+
84127
async def gc_task(self):
85128
while True:
86129
gc.collect()

0 commit comments

Comments
 (0)