Этот пример демонстрирует использование кнопки как переключателя: каждый раз, когда вы нажимаете кнопку, светодиод (или любая другая нагрузка) включается (если он выключен) или выключается (если включен). Он также фильтрует (антидребезг) входные данные, что означает проверку дважды в короткий промежуток времени, чтобы убедиться, что кнопка определенно нажата. Без debouncing, нажав кнопку один раз, программа может посчитать, как несколько нажатий. Использует millis(), чтобы отслеживать время, когда кнопка нажата.
плата Arduino
тактовая кнопка или переключатель
резистор 10 кОм
макетная плата
перемычки
Необходимое оборудование
Цепь
Схема
const int buttonPin = 2;
const int ledPin = 13;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
long lastDebounceTime = 0;
long debounceDelay = 50;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
buttonState = reading;
}
digitalWrite(ledPin, buttonState);
lastButtonState = reading;
}
}
const int ledPin = 13;
int ledState = HIGH;
int buttonState;
int lastButtonState = LOW;
long debounceDelay = 50;
void setup() {
pinMode(buttonPin, INPUT);
pinMode(ledPin, OUTPUT);
}
void loop() {
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
buttonState = reading;
}
digitalWrite(ledPin, buttonState);
}
}
Комментариев нет:
Отправить комментарий