Помощь при обработке кнопки
- Войдите на сайт для отправки комментариев
Вс, 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