summaryrefslogtreecommitdiff
path: root/shared-module/_pew/__init__.c
diff options
context:
space:
mode:
authorRadomir Dopieralski <openstack@sheep.art.pl>2018-08-23 23:22:47 +0200
committerRadomir Dopieralski <openstack@sheep.art.pl>2019-02-28 23:34:03 +0100
commit59f63eaef6d1024163864c9b30f879efc9dfd682 (patch)
tree30c08d2c5e052e0929b932d835605ffe845aa952 /shared-module/_pew/__init__.c
parent0a5c1c94025a1d36762d14b48995337b0f09ce97 (diff)
Handle new buttons
Diffstat (limited to 'shared-module/_pew/__init__.c')
-rw-r--r--shared-module/_pew/__init__.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/shared-module/_pew/__init__.c b/shared-module/_pew/__init__.c
index 2e09932f3..e44a4c0e3 100644
--- a/shared-module/_pew/__init__.c
+++ b/shared-module/_pew/__init__.c
@@ -36,6 +36,8 @@
void pew_tick(void) {
static uint8_t col = 0;
static uint8_t turn = 0;
+ static uint8_t pressed = 0;
+ static uint8_t last_pressed = 0;
digitalio_digitalinout_obj_t *pin;
pew_obj_t* pew = MP_STATE_VM(pew_singleton);
@@ -44,12 +46,18 @@ void pew_tick(void) {
pin = MP_OBJ_TO_PTR(pew->cols[col]);
++col;
if (col >= pew->cols_size) {
+ pew->pressed |= last_pressed & pressed;
+ last_pressed = pressed;
+ pressed = 0;
col = 0;
++turn;
if (turn >= 8) {
turn = 0;
}
}
+ if (!common_hal_digitalio_digitalinout_get_value(pew->buttons)) {
+ pressed |= 1 << col;
+ }
common_hal_digitalio_digitalinout_set_value(pin, true);
for (size_t x = 0; x < pew->rows_size; ++x) {
pin = MP_OBJ_TO_PTR(pew->rows[x]);