
В прошлом эксперименте светодиод загорался, когда мы держали кнопку нажатой и гас, когда кнопка не была нажата. В этот раз мы напишем скетч, который будет изменять состояние светодиода при каждом нажатии кнопки.

В прошлом эксперименте светодиод загорался, когда мы держали кнопку нажатой и гас, когда кнопка не была нажата. В этот раз мы напишем скетч, который будет изменять состояние светодиода при каждом нажатии кнопки.
При нажатии кнопки напряжение на ней будет меняться не мгновенно, а будет некоторое время «скакать» пока не установиться. Этот эффект называется дребезгом контактов.

Для того, чтобы избежать ложных срабатываний, необходимо в программу ввести небольшую задержку при чтении состояния кнопки.
Используем схему из предыдущего эксперимента.
Напишем код для считывания состояния кнопки. Каждый раз при нажатии кнопки будет меняться и состояние светодиода.
int buttonPin = 12;
int ledPin = 9;
boolean isLighting = false;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
if (digitalRead(buttonPin) == LOW) {
delay(10);
if (digitalRead(buttonPin) == LOW) {
reverseLED();
while (digitalRead(buttonPin) == LOW);
delay(10);
}
}
}
void reverseLED() {
if (isLighting) {
digitalWrite(ledPin, LOW);
isLighting = false;
} else {
digitalWrite(ledPin, HIGH);
isLighting = true;
}
}
Мы используем функцию reverseLED() для изменения состояния светодиода.
Загрузите скетч в микроконтроллер и проверьте его работоспособность.