Не обновляються данные на екране

RedOnesGoFaster
Offline
Зарегистрирован: 15.09.2017

Здраствуйте, подключены датчик давления и температуры BMP280 и датчик температуры и влажности DHT11. Данные выводяться на екран 1602 по I2C. Данные с DHT11 обновляються нормально а с BMP280 отображаеться только температура которая регистрировалась при старте и больше не обновляеться. В компорте данные обновляються нормально, проблема только с екраном. Скетч был собран из нескольких и доделан.

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

#define BMP_SCK 13
#define BMP_MISO 12
#define BMP_MOSI 11 
#define BMP_CS 10
#define DHTPIN 2  
#define DHTTYPE DHT11 
DHT dht(DHTPIN, DHTTYPE);

//Adafruit_BMP280 bme; 
//Adafruit_BMP280 bme(BMP_CS); 
Adafruit_BMP280 bme(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);
byte customChar[8] = {
  0b01100,
  0b10010,
  0b10010,
  0b01100,
  0b00000,
  0b00000,
  0b00000,
  0b00000
};
  
void setup() {
  Serial.begin(9600);
  dht.begin();
  lcd.init();                     
  lcd.backlight();
   lcd.createChar(0, customChar);
    lcd.begin(16, 2);
  bme.begin();
}
  
void loop() {
  Serial.print("Temperature = ");
    Serial.print(bme.readTemperature());
    Serial.println(" *C");
  
    
    Serial.print("Pressure = ");
    Serial.print(bme.readPressure());
    Serial.println(" Pa");

    Serial.print("Approx altitude = ");
    Serial.print(bme.readAltitude(1013.25)); 
    Serial.println(" m");
    Serial.println();
     
     lcd.print("t");
  lcd.write((uint8_t)0);
  lcd.print("OUT");
    lcd.print (round(bme.readTemperature()));
    lcd.print("C");
  
    
  float h = dht.readHumidity();
  float t = dht.readTemperature();
 
 if (isnan(t) || isnan(h)) {
    Serial.println("Failed to read from DHT");
  } else {
    Serial.print("Humidity: "); 
    Serial.print(h);
    Serial.print(" %\t");
    Serial.print("Temperature: "); 
    Serial.print(t);
    Serial.println(" *C");
    lcd.setCursor(9, 0);
     lcd.print("t");
  lcd.write((uint8_t)0);
  lcd.print("IN");
  lcd.print(round(t));
   lcd.print("C");
     lcd.setCursor(9, 1);
     lcd.print("H");
     lcd.print(h);
     lcd.print("%");
     delay(2000);
  }
  }

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Координаты экрана восстанавливайте, а то Вы всё в одну строку печатаете, вот она у Вас с экрана и уехала.

RedOnesGoFaster
Offline
Зарегистрирован: 15.09.2017

Спасибо, помогло.