const int LED=9; // Контакт 9 для подключения светодиода
const int BUTTON=2; // Контакт 2 для подключения кнопки
boolean lastButton = LOW; //Переменная для сохранения предыдущего состояния кнопки
boolean currentButton = LOW; //Переменная для сохранения текущего состояния кнопки
boolean ledOn = false; //Текущее состояние светодиода (включен/выключен)
void setup() {
pinMode (LED, OUTPUT); // Сконфигурировать контакт светодиода как выход
pinMode (BUTTON, INPUT); // Сконфигурировать контакт кнопки как вход
}
/*
* Функция сглаживания дребезга
* принимает в качестве аргумента предыдущее состояние кнопки
* и выдает фактическое.
*/
boolean debounce(boolean last)
{
boolean current = digitalRead(BUTTON); //Считать состояние кнопки
if (last != current) //Если изменилось...
{
delay(5); //Ждем 5 мс
current = digitalRead(BUTTON); //Считываем состояние кнопки снова
}
return current; //Возвращаем состояние кнопки
}
void loop() {
currentButton = debounce(lastButton); //чтение состояние дребезга
if (lastButton == LOW && currentButton == HIGH) //Если нажатие…
{
ledOn = !ledOn; //переключить значение светодиода
}
lastButton = currentButton; //сбросить значение кнопки
digitalWrite(LED, ledOn); //изменить состояние светодиода
}