Функция debounce – программный «анти-дребезг» для Arduino
[ Скачать с сервера (148.3 Kb) ]04.11.2016, 10:19

Функция debounce – программный «анти-дребезг»

#define pinBUTTON 6 // пин кнопки
#define pinLED 8 // пин светодиода

boolean lastStateButton=false; // предыдущее состояние кнопки
boolean currentStateButton=false; // текущее состояние кнопки
boolean stateLED=false; // состояние светодиода

void setup() {
 // put your setup code here, to run once:
 pinMode(pinBUTTON, INPUT); // пин кнопки для чтения
 pinMode(pinLED, OUTPUT); // пин светодиода на запись
}

void loop() {
 // put your main code here, to run repeatedly:
 currentStateButton = debounce(pinBUTTON, lastStateButton);
 // состояние кнопки изменилось с "ненажата" на "нажато"?
 if( lastStateButton == false && currentStateButton == true ) {
 stateLED = ! stateLED; // кнопка нажата – изменим состояние светодиода
 digitalWrite(pinLED, stateLED); // запишем его в пин светодиода (зажжем или погасим)
 }

 lastStateButton = currentStateButton; // запомним состояние кнопки
}

// функция "анти-дребезга", возвращает новое текущее состояние кнопки
// pin - номер пина кнопки
// state - текущее состояние кнопки
boolean debounce(int pin, boolean state)
{
 boolean current;
 current = digitalRead(pin); // прочитаем состояние кнопки
 if( current != state ) { // если состояние кнопки изменилось
 delay(5); // подождем 5 мс пока прекратится дребезг
 current = digitalRead(pin); // и снова прочитаем состояние
 }
 return current;
}

---

 

Категория: Arduino | Добавил: ae999
Просмотров: 2178 | Загрузок: 154