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

среда, 28 сентября 2011 г.

Blink Without Delay


Blink Without Delay

Иногда вам нужно делать две вещи одновременно. Например, вы можете мигать светодиодом (или некоторые другие требовательные к процессорному времени функции) пока считывается нажатие кнопки или другие данные. В этом случае, вы не можете использовать delay () , или вам придется  остановить все остальные программы, а индикатор моргнул. Программа может пропустить нажатие кнопки, если она происходит во время delay (). Этот скетч показывает, как мигать индикатором без использования delay () . Он следит когда Arduino переключил светодиод последний раз. Затем каждый раз через loop () , он проверяет, достаточно ли прошло времени. Если достаточно, он переключает индикатор (включен или выключен).

Необходимое оборудование



  • плата Arduino
  • светодиод

  • Цепь

    Чтобы построить схему, возьмите светодиод и подключите его длинную, положительную ногу (т. н. анод) к контакту 13. Подцепите  отрицательную ногу (т. н. анод) на землю. Затем подключите вашу плату Arduino на ваш компьютер, запустите программу Arduino и введите код.

    Схема


    Код

    Код ниже использует millis (), функцию, которая возвращает количество миллисекунд, прошедших со старта текущей программы на плате Arduino для мигания светодиода.
    const int ledPin =  13;

    int ledState = LOW;
    long previousMillis = 0;

    long interval = 1000;

    void setup() {
      pinMode(ledPin, OUTPUT);    
    }

    void loop()
    {
      unsigned long currentMillis = millis();

      if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis;

        if (ledState == LOW)
          ledState = HIGH;
        else
          ledState = LOW;

        digitalWrite(ledPin, ledState);
      }
    }

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

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