int switchPin = 2;
int ledPin = 3;
boolean lastButton = LOW;
boolean currentButton = LOW;
boolean ledOn = false;
void setup()
{
pinMode(switchPin, INPUT);
pinMode(ledPin, OUTPUT);
}
boolean debounce(boolean lastButton) //значение функции debounce (true или false) зависит от значения функции lastButton
{
boolean current = digitalRead(switchPin); //чтение состояния кнопки
if (lastButton != current) //если найдены отличия
{
delay(5); //ждем 5мс
current = digitalRead(switchPin); //читаем снова
}
return current; //возвращаем текущее состояние
}
void loop()
{
currentButton = debounce(lastButton); //чтение состояния debounce
if (lastButton == LOW && currentButton == HIGH) //если было нажатие
{
ledOn = !ledOn; //переключить значение ledOn на противоположное
}
lastButton = currentButton;
digitalWrite(ledPin, ledOn);
}