QuadDisplay2 не работает

Тема в разделе "Arduino & Shields", создана пользователем Bezeluka, 13 апр 2019.

  1. Bezeluka

    Bezeluka Нуб

    Добрый день!
    Извините за глупый вопрос. Собрал автополиватор по схеме, скачал библиотеку, залил скетч, пытаюсь скомпилировать, а он ругается:
    In file included from irrigator.ino:2:
    /путь/QuadDisplay2.h:71: error: 'long unsigned int millis()' cannot appear in a constant-expression
    /путьQuadDisplay2.h:71: error: a function call cannot appear in a constant-expression
    /путь/QuadDisplay2.h:71: error: ISO C++ forbids initialization of member '_startMillis'
    /путь/QuadDisplay2.h:71: error: making '_startMillis' static
    /путь/QuadDisplay2.h:71: error: ISO C++ forbids in-class initialization of non-const static member '_startMillis'

    Перерыл интернет, форум - все пишут, что пользуются этой библиотекой и проблем не знают, а у меня просто при ее подключении возникает проблема. Подскажите пожалуйста что делать.
     
  2. ZAZ-965

    ZAZ-965 Гуру

    @Bezeluka, версия Arduino IDE, версия и разрядность операционной системы?
     
  3. Bezeluka

    Bezeluka Нуб

    Arduino IDE 1.0.6 версии, система MAC 10,9 (32бита)
    скетч:
    // Подключаем библиотеку для работы с дисплеем
    #include "QuadDisplay2.h"
    // даём разумное для пина, к которому подключена помпа
    #define POMP_PIN 4
    // даём разумное для пина, к которому подключён датчик влажности почвы
    #define HUMIDITY_PIN A0
    // минимальный порог влажности почвы
    #define HUMIDITY_MIN 200
    // максимальный порог влажности почвы
    #define HUMIDITY_MAX 700
    // интервал между проверкой на полив растения
    #define INTERVAL 60000 * 3
    // переменная для хранения показания влажности почвы
    unsigned int humidity = 0;

    // статическая переменная для хранения времени
    unsigned long waitTime = 0;

    // создаём объект класса QuadDisplay и передаём номер пина CS
    QuadDisplay qd(9);

    void setup(void)
    {
    // начало работы с дисплеем
    qd.begin();
    // пин помпы в режим выхода
    pinMode(POMP_PIN, OUTPUT);
    // выводим 0 на дисплей
    qd.displayInt(0);
    }

    void loop(void)
    {
    // считываем текущее показания датчика влажности почвы
    int humidityNow = analogRead(HUMIDITY_PIN);
    // если показания текущей влажности почвы
    // не равняется предыдущему запросу
    if(humidityNow != humidity) {
    // сохраняем текущие показания влажности
    humidity= humidityNow;
    // и выводим показания влажности на дисплей
    qd.displayInt(humidityNow);
    }
    // если прошёл заданный интервал времени
    // и значения датчика влажности меньше допустимой границы
    // if ((waitTime == 0 || millis() - waitTime > INTERVAL)
    //&& humidity < HUMIDITY_MIN )
    //{
    // включаем помпу
    digitalWrite(POMP_PIN, HIGH);
    // ждём 2 секунды
    delay(2000);
    // выключаем помпу
    digitalWrite(POMP_PIN, LOW);
    // приравниваем переменной waitTime
    // значение текущего времени плюс 3 минуты
    //waitTime = millis();
    //}
    }
     
  4. ZAZ-965

    ZAZ-965 Гуру

    @Bezeluka, обновите Arduino IDE до последней версии. Запись unsigned long _startMillis = millis() требует поддержки С++11 и не будет компилироваться в вашей версии.
     
    Bezeluka и BAR__MEN нравится это.
  5. Bezeluka

    Bezeluka Нуб

    Огромное спасибо!!! Как всегда - ларчик просто открывался..