#include #include #include #include #include #include #include "const.h" #include "input.h" bool is_toggle[BUTTON_COUNT] = { false }; bool btn_prev[BUTTON_COUNT] = { false }; void set_mux_addr(uint8_t addr) { gpio_put(MUX_S0, addr & 1); gpio_put(MUX_S1, (addr >> 1) & 1); gpio_put(MUX_S2, (addr >> 2) & 1); } void update_inputs(input_t* input) { // Pots for (uint8_t i = 0; i < 8; i++) { set_mux_addr(i); for (uint8_t j = 0; j < 2; j++) { adc_select_input(j); sleep_us(20); // Let multiplexers multiplex uint16_t val = adc_read(); if (val > 5) input->pots[i + j * 8] = (float)val; } } // Buttons for (uint8_t i = 0; i < BUTTON_COUNT; i++) { bool btn_curr = gpio_get(BUTTON_BASE + i); if (btn_curr == true && btn_prev[i] == false) { if (is_toggle[i]) input->buttons[i] = !input->buttons[i]; } if (!is_toggle[i]) input->buttons[i] = btn_curr; btn_prev[i] = btn_curr; sleep_ms(1); // Why don't you bounce on this dihh } }