I would like to ask you to sign up with the Best Hosting and read more web hosting reviews.

Построение задержки без delay()

Печать
Категория: Arduino
23 А 2015 Просмотров: 4656

При разработке программ для Arduino очень часто приходится использовать функцию delay(). Основная проблема в использовании этой функции является то что при ее исполнении другие участки кода не могут быть выполнены.

Есть альтернативные варианты построения кода программы, которые позволяют увеличить производительность контроллера Arduino и писать более грамотный код. Ниже показан пример подобной программы, которая используют задержку без оператора delay().

 

const int ledPin =  13;      // номер выхода, подключенного к светодиоду
int ledState = LOW;             //состояние светодиода
long previousMillis = 0;        //время последнего переключения светодиода
 
long interval = 1000;           // интервал между включение/выключением светодиода (1 секунда)
 
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);
  }
}

@2012. Блог "Умный дом Екатеринбурга". Все права защищены.

Free Joomla 1.7 Templates designed by College Jacke