Помощь при обработке кнопки
- Войдите на сайт для отправки комментариев
Вс, 10/07/2016 - 12:03
Допустим есть кнопка подключенный на 18 пин Меги, есть так же массив чисел 8x8, нужно при нажатии на кнопку каждый элемент массива прибавить единицу.
buttonState1 = digitalRead(buttonPin); if (buttonState1 == HIGH) { for(byte i = 0; i < COLS; i++){ for(byte j = 0; j < ROWS; j++){ kpdNote[i][j] = kpdNote[i][j] + 0x01; Serial.print("\t"); Serial.print (kpdNote[i][j] ); } Serial.println(); } }
код написан но рабоатет как то не правильно. Когда нажимаешь на кнопку она начинает выводить несколько строк массива, и прибавляет не один раз, а в стреднем четыре.
Помогите пожалуйста в чем беда???))
Админы подчистили дубли - СПСИБО!
Повторюсь:
Помогите пожалуйста в чем беда???))
Нажали кнопку, код 6-14 отработал. Что будет, если кнопка еще нажата, а код опять пришел на 3 строку? Есть контроль от повторной отработки этого куска кода при нажатой долгое время кнопки?
Введите флаг состояния кнопки. Изначально равен 0. Если кнопка нажимается, флаг переводится в состояние 1. Есои состояние 1, то обработать массив и установить состояние 2. Если состояние 2 и кнопка отпускается, состояние переводится в исходное (обнуляется).
Дребезжит поди кнопка-то. Подавите дребезг и будет Вас счастье:)
http://www.eng.utah.edu/~cs5780/debouncing.pdf