Это код. Делаю метеостанцию. Почему-то не выводятся значения с датчиков на LCD дисплей. Помогите, пожалуйста! Код (C++): #include <SFE_BMP180.h> #include <TimeLib.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,2); #include <DHT.h> DHT dht(2, DHT11); SFE_BMP180 pressure; byte BUTTON=4; byte gradus[8] = { 0b01100,0b10010,0b10010,0b01100,0b00000,0b00000,0b00000,0b00000 }; byte P[8] = { 0b11111,0b10001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000 }; byte Y[8] = { 0b10001,0b10001,0b10001,0b01111,0b00001,0b00001,0b01110,0b00000 }; byte L[8] = { 0b00111,0b01001,0b10001,0b10001,0b10001,0b10001,0b10001,0b00000 }; // создаем русскую букву "Ж" byte ZH[8] = { 0b10101,0b10101,0b10101,0b01110,0b10101,0b10101,0b10101,0b00000 }; byte znak[8] = { 0b10000,0b10000,0b10000,0b11110,0b10001,0b10001,0b11110,0b00000 }; byte YA[8] = { 0b01111, 0b10001, 0b10001, 0b01111, 0b00101, 0b01001, 0b10001, 0b00000 }; byte D[8] = { 0b00100, 0b01010, 0b01010, 0b01010, 0b11111, 0b10001, 0b10001, 0b00000 }; byte I[8] = { 0b10001, 0b10011, 0b10101, 0b10101, 0b10101, 0b11001, 0b10001, 0b00000 }; void setup() { pinMode (BUTTON, INPUT); Serial.begin(9600); lcd.init(); lcd.backlight(); lcd.createChar(1, gradus); lcd.createChar(2, P); lcd.createChar(3, Y); lcd.createChar(4, L); lcd.createChar(5, ZH); lcd.createChar(6, znak); lcd.createChar(7, YA); lcd.createChar(8, D); lcd.createChar(9, I); setTime (15, 54, 0, 7, 21, 2018); } void loop() { // если нужны точные значение, то используйте float, вместо byte byte h = dht.readHumidity(); // считываем значение температуры byte t = dht.readTemperature(); // считываем значение влажности char status; double P,T; status = pressure.startPressure(3); if (status != 0) { // ждем окончания замера: delay(status); status = pressure.getPressure(P,T); if (status != 0) { Serial.print("абсолютное давление: "); Serial.print(P/133.3); Serial.println(" милиметров ртутного столба"); } else Serial.println("ошибка получение давления\n"); } else Serial.println("ошибка запуска получения давления\n"); delay(1000); lcd.setCursor(0,0); lcd.print("TEM"); lcd.print(char(2)); lcd.print(":"); lcd.print(t); lcd.print(char(1)); lcd.print(" "); lcd.print("B"); lcd.print(char(4)); lcd.print(":"); lcd.print(h); lcd.print("%"); lcd.setCursor(0,1); lcd.print(char(8)); lcd.print("AB"); lcd.print(char(4)); lcd.print(":"); lcd.print(P/133.3); lcd.print("MM.PT.CT"); delay(100); }
Не сказал бы, что подобное будет работать как надо: Код (Text): lcd.setCursor(0,0); lcd.print("TEM"); lcd.print(char(2)); lcd.print(":"); lcd.print(t); lcd.print(char(1)); В этом случае позиция курсора дисплея - 0,0. Каждый вызов print будет писать именно с этой позиции, т.е текст на текст. Нужно так: Код (Text): lcd.setCursor(0,0); lcd.print("TEM" + char(2) + ": " + t + char(1)); Ну и перед отображением новых данных нужно чистить дисплей с помощью функции lcd.clear();
Но тогда появляется вот такая ошибка: exit status 1 invalid operands of types 'const char*' and 'const char [3]' to binary 'operator+'