Если Вы заинтересованы в моих переводах и хотите меня отблагодарить, то кликните всего на одной ссылке в блоке Оплаченная Реклама

суббота, 10 декабря 2011 г.

Debounce

Этот пример демонстрирует использование кнопки как переключателя: каждый раз, когда вы нажимаете кнопку, светодиод (или любая другая нагрузка) включается (если он выключен) или выключается (если включен). Он также фильтрует (антидребезг) входные данные, что означает проверку дважды в короткий промежуток времени, чтобы убедиться, что кнопка определенно нажата. Без 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;
    }
    }

    Комментариев нет:

    Отправить комментарий