HELP plz: BME280 only display 0.00 on LCD

Well folks, its been a while!

Didnt play with arduino for a while and then i got that idea that I could make a dry cabinet for my photography gear instead of buying one.

Plan was kinda simple in my mind: I bought a dead Wine Cooler with 2 different compartment and removed the cooling system from it.

Then I modified the fan system and added peltier cooling unit to act as dehumidifier. So far that part of the project is working well.

I plan to use 1 arduino to read 2 BME280 (One in each compartment) and to display reading on 2 LCD 20x4. The arduino will also be controlling a relay shield to turn on and off the peltier unit as required.

SOOOOOOOOO

here is the problem: Only get 0.00 as reading on my LCD.

Ive run a scanner to get the I2C adress of both item 0x77 for the BME280 and 0x26 the LCD.

here is the code:

//#include <SPI.h>
#include <Wire.h>
#include <cactus_io_BME280_I2C.h>
#include <LiquidCrystal_I2C.h>

// Create two BME280 instances
BME280_I2C bmeL(0x77); // I2C using address 0x77
//BME280_I2C bmeR(0x76); // I2C using address 0x76

// Create two 1602 lCD instances
LiquidCrystal_I2C lcdL(0x26,20,4);  // set the LCD1 (Right) address to 0x26 
//LiquidCrystal_I2C lcdR(0x27,20,4);  // set the LCD2 (Left) address to 0x27

void setup() {

//initialise LCDs
  lcdL.init();
  //lcdR.init(); 
  lcdL.backlight();
  //lcdR.backlight();  

  
}

void loop() {

//Serial.print("BME 1\t");
bmeL.readSensor();
//lcdL.print(bmeL.getPressure_MB()); lcdL.print(" mb\t"); // Pressure in millibars
//Serial.print(bme1.getHumidity()); Serial.print(" %\t\t");
//Serial.print(bme1.getTemperature_C()); Serial.print(" *C\t");

delay(1000);

  lcdL.setCursor(0,0);
  lcdL.print("Humidity: ");
  lcdL.print(bmeL.getHumidity());
  lcdL.print("%");

  lcdL.setCursor(0,1);
  lcdL.print("Temperature: ");
  lcdL.print(bmeL.getTemperature_C());
  lcdL.print((char)223);
  lcdL.print("C");

  /*lcdL.setCursor(0,2);
  lcdL.print("pressure: ");
  lcdL.print(bmeL.getPressure_MB());
  lcdL.print("Mb");*/


  


// Add a 1 second delay.
delay(1000); // just here to slow down the output.

}

please do not mind all the //commented line. Im not a professional coder, so i used code from exemple that work on serial monitor then play with them to get it work the way i need...

So Im asking your help to figure it out :slight_smile: and if possible using plain language so I can understand haha

thanks

KArl

Start with just displaying on Serial Monitor.

Next add the code for the LCD.

One step at at time especially if you are new to this.

MY BME280 work on 0x76, so are you sure 0x77 is correct? Your code does not test for errors if it's not.

At first I worked it on the serial monitor. it worked well there.
then I just took the code and converted it to be use on LCD.

The adress returned by the scanner said 0x77

Ill go thy 0x76 just out of curiosity

well.... i sort it out...

i forgot this:

if (!bmeL.begin())
{
   lcdL.println("check wiring!");
   while (1);
 }

now it work.