В прошлом эксперименте светодиод загорался, когда мы держали кнопку нажатой и гас, когда кнопка не была нажата. В этот раз мы напишем скетч, который будет изменять состояние светодиода при каждом нажатии кнопки.
В прошлом эксперименте светодиод загорался, когда мы держали кнопку нажатой и гас, когда кнопка не была нажата. В этот раз мы напишем скетч, который будет изменять состояние светодиода при каждом нажатии кнопки.
При нажатии кнопки напряжение на ней будет меняться не мгновенно, а будет некоторое время «скакать» пока не установиться. Этот эффект называется дребезгом контактов.
Для того, чтобы избежать ложных срабатываний, необходимо в программу ввести небольшую задержку при чтении состояния кнопки.
Используем схему из предыдущего эксперимента.
Напишем код для считывания состояния кнопки. Каждый раз при нажатии кнопки будет меняться и состояние светодиода.
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() для изменения состояния светодиода.
Загрузите скетч в микроконтроллер и проверьте его работоспособность.