Добрый день! Извините за глупый вопрос. Собрал автополиватор по схеме, скачал библиотеку, залил скетч, пытаюсь скомпилировать, а он ругается: 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' Перерыл интернет, форум - все пишут, что пользуются этой библиотекой и проблем не знают, а у меня просто при ее подключении возникает проблема. Подскажите пожалуйста что делать.
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(); //} }
@Bezeluka, обновите Arduino IDE до последней версии. Запись unsigned long _startMillis = millis() требует поддержки С++11 и не будет компилироваться в вашей версии.