Код (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() { Serial.begin(9600); pinMode(ralay, HIGH); digitalWrite(ralay, HIGH); Serial.begin(9600); Serial.println("DHTxx test!"); } void poliv() { LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display 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); LiquidCrystal_I2C lcd(0x27,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display lcd.setCursor(0, 0); // Устанавливаем курсор в начало 1 строки lcd.print("Hum = % "); // Выводим текст lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ 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; 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++; } } вот код чёт сам писал чёт копировал с разных сайтов но выведение температуры воздуха на экран компилятор подчёркивает ошибкой помогите пожалуйста мучаюсь с кодом уже целый год и никак не могу его закончить
Иван, в первом скетче вы забыли создать переменную LiquidCrystal_I2C lcd(0x27,20,4) - в этом создаете ее в каждой функции? А нужна она один раз в глобальной области видимости (выше функции setup()). Также вы нигде не создаете переменную типа iarduino_DHT sensor(DHTPIN ) - а она нужна, и тоже глобальной. Функция readTemperature() - это откуда скопипащено? Среди методов iarduino_DHT нет такой. К каждой библиотеке есть примеры, посмотрите и разберитесь с ними.
readTemperature() есть везде где икал код на dht11 LiquidCrystal_I2C lcd(0x27,20,4) если не вставлять в каждой функции тон компилятор её не видит и выводит ошибку
Ик-ик-икто вам сказал, что программы пишутся методом копи-пасте из инета. Метод readTemperature из библиотеки adafruit-DHT-sensor. К каждой библиотеке есть папка с примерами, поработайте с ними. Да книгу по С почитайте. Ладно, пока у вас не пропал интерес, помогу маленько (алгоритм не смотрел, поправил только ошибки) Код (C++): #include <LiquidCrystal_I2C.h> #include <DHT.h> //https://github.com/adafruit/DHT-sensor-library #define DHTPIN 2 #define DHTTYPE DHT11 //глобальные переменные DHT dht(DHTPIN, DHTTYPE); LiquidCrystal_I2C lcd(0x27,20,4); 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; 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; int ledPins[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; void setup() { Serial.begin(9600); dht.begin(); pinMode(ralay, HIGH); digitalWrite(ralay, HIGH); } void poliv() { String DisplayWords; int sensorValue; int time_tmp; time_tmp = time_work; digitalWrite(ralay, LOW); 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); // Устанавливаем курсор в начало 1 строки lcd.print("Hum = % "); // Выводим текст lcd.setCursor(7, 0); // Устанавливаем курсор на 7 символ lcd.setCursor(0, 1); // Устанавливаем курсор в начало 2 строки lcd.print("Temp = \1C "); // Выводим текст, \1 - значок градуса lcd.setCursor(7, 1); // Устанавливаем курсор на 7 символ lcd.print(dht.readTemperature(), 1); // Выводим значение температуры if (dht.readTemperature()<70 and x>600) digitalWrite(rele, HIGH); else digitalWrite(rele, LOW); if (dht.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++; }