logo
+7 (951) 999-89-94
428003, г. Чебоксары, ул. Федора Гладкова, д.9, оф.319
15.05.2019

Изменение состояния светодиода с помощью кнопки

Изменение состояния светодиода с помощью кнопки

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

Дребезг контактов

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

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

Схема

Используем схему из предыдущего эксперимента.

Скетч

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

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() для изменения состояния светодиода.

Загрузите скетч в микроконтроллер и проверьте его работоспособность.

 

Предыдущий урок | В начало | Следующий урок