Выделенное жирным выводится как ошибка. Что делать? Помогите пожалуйста #include <LiquidCrystal_I2C.h> int minv = 600;//малая влажность int maxv = 220;//полный полив int normv = 500;//чуть влажная int value = 0;//полученное значение int last_value = 0;//последнее значимое изменение int value_sdvig = 50; //значимое изменение int ralay = 6; //пин реле int time_work = 10;//время работы помпы в сек int analogPin = A0;//пин датчика #include <iarduino_DHT.h> #define DHTPIN 2 // what pin we're connected to int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; #define DHTTYPE DHT11 //Переменные таймаута int second = 0; // секунды int time_off = 0; // счетчик оставшегося времени int pause_time = 15; // время отдыха после полива в минутах //DHT dht(DHTPIN, DHTTYPE); int rele = 3; int x = 0; int y = 0; int thresholdUp = 400; int thresholdDown = 250; void setup() { lcd.begin( 16 , 2 ); // put your setup code here, to run once: Serial.begin(9600); pinMode(ralay, HIGH); //настройка реле digitalWrite(ralay, HIGH); Serial.begin(9600); Serial.println("DHTxx test!"); } void poliv() { int time_tmp; time_tmp = time_work; digitalWrite(ralay, LOW); // Здесь мы объявляем строку, в которой хранятся данные для отображения на дисплее. // Значения будут изменяться в зависимости от уровня влажности почвы String DisplayWords; // В переменной sensorValue хранится аналоговое значение датчика с контакта А0 int sensorValue; sensorValue = analogRead(A0); // перемещаем курсор к началу первой строки дисплея: mySerial.write(254); lcd.write(128); // очистка дисплея: lcd.write(" "); lcd.write(" "); // перемещаем курсор к началу первой строки дисплея: mySerial.write(254); lcd.write(128); // запись необходимой информации на дисплей: lcd.write("Water Level: "); lcd.print(sensorValue); //Использование.print вместо .write для значений DisplayWords = "Wet off!"; lcd.print(DisplayWords); while (time_tmp > 0 && value > normv) { // ждем истечения времени time_work или нормальной влажности почвы delay(1000); value = analogRead(analogPin); //обновляем значение влажности time_tmp--; } digitalWrite(ralay, HIGH); second = 0; // сбрасываем секунды на ноль time_off = pause_time; // устанавливаем задержку между поливами } void loop() { // Добавляем паузы в несколько секунд между измерениями delay(2000); // Reading temperature or humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor) // Read temperature as Celsius // Выводим показания влажности и температуры lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("Hum = % "); // Выводим текст lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ lcd.print(h, 1); // Выводим на экран значение влажности lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Temp = \1C "); // Выводим текст, \1 - значок градуса lcd.setCursor(7, 1); // Устанавливаем курсор на 7 символ lcd.print(readTemperature(), 1); // Выводим значение температуры if (readTemperature() < 70 and x > 600)digitalWrite(rele, HIGH); else digitalWrite(rele, LOW); if (readTemperature()> 70 and x > 600) x = 420; // put your main code here, to run repeatedly: value = analogRead(analogPin); if (value > (last_value + value_sdvig) || value < (last_value - value_sdvig)) { // если last_value отклонился на value_sdvig выводим value в uart Serial.println(value); last_value = value; } if ((value > (minv - value_sdvig)) && time_off < 1) poliv(); //если значение влажности > критическая влажность - 50 и не было недавних поливов // временные функции что бы не играться с таймерами if (second > 59) { second = 0; if (time_off > 0) time_off--; } delay(1000);//пауза 1 сек second++; } }
Код (C++): #include <LiquidCrystal_I2C.h> int minv = 600; int maxv = 220; int normv = 500; int value = 0; int last_value = 0; int value_sdvig = 50; int ralay = 6; int time_work = 10; int analogPin = A0; #include <iarduino_DHT.h> #define DHTPIN 2 int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; #define DHTTYPE DHT11 int second = 0; int time_off = 0; int pause_time = 15; int rele = 3; int x = 0; int y = 0; int thresholdUp = 400; int thresholdDown = 250; void setup() { lcd.begin( 16 , 2 ); Serial.begin(9600); pinMode(ralay, HIGH); digitalWrite(ralay, HIGH); Serial.begin(9600); Serial.println("DHTxx test!"); } void poliv() { int time_tmp; time_tmp = time_work; digitalWrite(ralay, LOW); String DisplayWords; int sensorValue; sensorValue = analogRead(A0); lcd.write(128); lcd.write(" "); lcd.write(" "); lcd.write(128); lcd.write("Water Level: "); lcd.print(sensorValue); DisplayWords = "Wet off!"; lcd.print(DisplayWords); while (time_tmp > 0 && value > normv) { delay(1000); value = analogRead(analogPin); time_tmp--; } digitalWrite(ralay, HIGH); second = 0; time_off = pause_time; } void loop() { delay(2000); lcd.setCursor(0, 0); lcd.print("Hum = % "); lcd.setCursor(7, 0); lcd.print(h, 1); lcd.setCursor(0, 1); lcd.print("Temp = \1C "); lcd.setCursor(7, 1); lcd.print(readTemperature(), 1); if (readTemperature() < 70 and x > 600)digitalWrite(rele, HIGH); else digitalWrite(rele, LOW); if (readTemperature()> 70 and x > 600) x = 420; value = analogRead(analogPin); if (value > (last_value + value_sdvig) || value < (last_value - value_sdvig)) { Serial.println(value); last_value = value; } if ((value > (minv - value_sdvig)) && time_off < 1) poliv(); if (second > 59) { second = 0; if (time_off > 0) time_off--; } delay(1000); second++; } } конкретно вот эту строчку компилятор выводит как ошибку Код (C++): lcd.setCursor(0, 0);
А где объявлен объект lcd? не забыли строку: LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display