delay - это зло

Тема в разделе "Arduino & Shields", создана пользователем roman88, 17 фев 2017.

  1. roman88

    roman88 Нерд

    Друзья подскажите интересный вопрос возник. delay - это зло.
    Светодиод вкл и выкл на секуенду
    Подскажите как мигать светодиодом 10 секунд.

    Всем спасибо.

    Есть код.

    Код (C++):
    const int ledPin =  13;      // the number of the LED pin
    // Variables will change:
    int ledState = LOW;             // ledState used to set the LED
    long previousMillis = 0;        // will store last time LED was updated
    // the follow variables is a long because the time, measured in miliseconds,
    // will quickly become a bigger number than can be stored in an int.
    long interval = 1000;           // interval at which to blink (milliseconds)
    void setup() {
      // set the digital pin as output:
      pinMode(ledPin, OUTPUT);    
    }
    void loop()
    {
      // here is where you'd put code that needs to be running all the time.
      // check to see if it's time to blink the LED; that is, if the
      // difference between the current time and last time you blinked
      // the LED is bigger than the interval at which you want to
      // blink the LED.
      unsigned long currentMillis = millis();
      if(currentMillis - previousMillis > interval) {
        // save the last time you blinked the LED
        previousMillis = currentMillis;  
        // if the LED is off turn it on and vice-versa:
        if (ledState == LOW)
          ledState = HIGH;
        else
          ledState = LOW;
        // set the LED with the ledState of the variable:
        digitalWrite(ledPin, ledState);
      }
    }
     
  2. // interval at which to blink (milliseconds)
     
  3. serg_admin

    serg_admin Гик

    Код (C++):
     unsigned long currentMillis = millis();
    static int c = 10;
      if((currentMillis - previousMillis > interval) && ( c > 0 )) {
    c--;
    ...
    ...
    }
     
    Последнее редактирование: 17 фев 2017
    roman88 нравится это.
  4. Tim308

    Tim308 Нерд

    Не понял почему delay- это зло, тем более когда нужно мигать светодиодом
     
  5. roman88

    roman88 Нерд

    для светодиода может и не зло, зло для многозадачности
     
  6. Tim308

    Tim308 Нерд

    Только если так
     
  7. serg_admin

    serg_admin Гик

    arkadyf нравится это.
  8. REm

    REm Гик

    для светодиода можно и не изощряться особо
    long interval =1000; - это секунда
    long interval =5000; - это пять секунд.
    меняй в своём коде этот параметр
     
  9. Airbus

    Airbus Радиохулиган Модератор

    Смысл темы?
     
  10. REm

    REm Гик

    смысла нет. Есть смысл создать тему быстрых вопросов и закрепить её.
     
  11. ostrov

    ostrov Гуру

    Полная многозадачность палка о двух концах. Зачастую с помощью millis и прерываний многозадачность реализовать быстрее, проще и надежнее. А учитывая квант времени порядка 20 мс, то и не все задачи на мультитаск покатит.