Проблема в millis ()

Тема в разделе "Arduino & Shields", создана пользователем mavrin_88, 6 апр 2018.

  1. mavrin_88

    mavrin_88 Нуб

    Доброго дня всем,помогите решить проблему,не работает код должным образом

    Код (C++):

    #define LED_PIN  5                            // номер выхода,подключенного к светодиоду
    #define  INTERVAL  10000UL           // интервал между включение/выключением светодиода (1 секунда)
    int FlagPoliva = 0;
    int timehour = 15;
    void setup() {
     
      pinMode(LED_PIN, OUTPUT);
      Serial.begin(9600);    
    }
    void loop()
    {
      Serial.println(FlagPoliva);                                     // Отладка значения переменной

     
      static unsigned long currentMillis = 0;               // Храним время последнего переключения светодиода
     

      if (timehour == 15 && FlagPoliva == 0){               // Считываем время, если оно равно 19 часам РМ и флаг полива = 0 то выполняем полив
           digitalWrite(LED_PIN, 1);

      if (millis() - currentMillis > INTERVAL) {                           // Заканчиваем полив по истечению заданного в минутах времени
           digitalWrite(LED_PIN, 0);
           FlagPoliva = 1;                                                 // Установим флажок, что больше пока поливать не надо
           currentMillis = millis();
      }
          }
         
    }

     
    значение переменной FlagPoliva почему то всегда = 1
     
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    Вы уверены что правильно расставили скобки?
     
  3. parovoZZ

    parovoZZ Гуру

    Выучить Си и затем самостоятельно обнаружить ошибку.
     
  4. b707

    b707 Гуру

    не трудитесь отвечать, на другом форуме уже проблему решили.
    Все у человека работает как надо, просто он монитором порта пользоваться не умеет, как оказалось.
     
  5. AlexU

    AlexU Гуру

    Ну? И какая в этом выражении ошибка?