Arduino: как опросить много кнопок по трём проводам
Собственно возникла задача, как опросить много кнопок, используя как можно меньше проводов. В итоге задача решается при помощи обычных резисторов: 100кОм подтягивающего, и по 1 кОм на каждую кнопку (кроме первой) для уменьшения напряжения. Читать соответственно будем через аналоговый вход. Принципиальная схема подключения выглядит примерно так (потенциально расширяема до примерно 500 кнопок):
Ну и скетч соответственно:
1 2 3 4 5 6 7 8 9 10 11 12 |
int analogPin = A0; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(analogPin); if (val>0){ Serial.println(val); delay(100); }; } |
Из потенциальных проблем вижу сложности с обработкой нажатий нескольких кнопок одновременно и возможные изменения значений кнопок при «просадке» напряжения на плате.