ESP32 with OLED, AHT10, RTC and HX711

Hi, my problem is that values shown for temperature and humidity are 255 but connections are ok because I tested it with example code from AHTxx library. Everything else works fine.

#include <AHTxx.h>
#include <I2C_BM8563.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <HX711.h>

#define BM8563_I2C_SDA 12
#define BM8563_I2C_SCL 14

#define SCREEN_WIDTH 128 // Sirina OLED-a
#define SCREEN_HEIGHT 64 // Visina OLED-a

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

unsigned long previousMillis = 0;  // stores the last time the display was updated

// Deklariranje pinova za load cell
const int LOADCELL_DOUT_PIN = 25;
const int LOADCELL_SCK_PIN = 26;

HX711 scale;
//Kalibracijski faktor
#define CALIBRATION_FACTOR -471.497 //Kalibracijski faktor kako bi vaga bila tocna

//Deklaracija varijabli za temperaturu i vlaznost
float temp;
float humidity;

I2C_BM8563 rtc(I2C_BM8563_DEFAULT_ADDRESS, Wire1);

AHTxx aht10(AHTXX_ADDRESS_X38, AHT1x_SENSOR);

void setup() {
  delay(50);
  Wire.begin();
  scale.begin(25, 26);
  scale.set_scale(CALIBRATION_FACTOR);
  Serial.begin(115200);
  Wire1.begin(BM8563_I2C_SDA, BM8563_I2C_SCL);
    //Postavljanje datuma
  I2C_BM8563_DateTypeDef dateStruct;
  dateStruct.weekDay = 2;
  dateStruct.month = 3;
  dateStruct.date = 29;
  dateStruct.year = 2023;
  rtc.setDate(&dateStruct);
  //Postavljanje sata
  I2C_BM8563_TimeTypeDef timeStruct;
  timeStruct.hours   = 14;
  timeStruct.minutes = 58;
  timeStruct.seconds = 30;
  rtc.setTime(&timeStruct);

  display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Pokretanje OLED-a
  display.clearDisplay();
  display.setTextColor(SSD1306_WHITE);
  display.setTextSize(1);
  display.setCursor(0, 0);
  display.display();

  aht10.begin(19, 18); //Pokretanje AHT10 (19 - SDA, 18 - SCL)
  rtc.begin(); // Pokretanje RTC-a (SDA - 12, SCL - 14)
}
void loop() { 
   // check if it's time to update the display
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= 1000) {  // update the display every 1000 milliseconds
    previousMillis = currentMillis;
  display.clearDisplay();
  //Postavljanje RTC-a
  I2C_BM8563_DateTypeDef dateStruct;
  I2C_BM8563_TimeTypeDef timeStruct;
  rtc.getDate(&dateStruct);
  rtc.getTime(&timeStruct);

  float weight = (scale.get_units(10)); // Ocitava se tezina
   temp = aht10.readTemperature(); // Ocitavanje temperature
   humidity = aht10.readHumidity(); // Ocitavanje vlaznosti
   Serial.println(temp);

  display.setCursor(0, 0);
  display.printf("%02d/%02d/%02d %02d:%02d:%02d\n", //Deklariranje formata za ispis datuma i vremena (16/3/2023 9:00:30)
                dateStruct.date,
                dateStruct.month,
                dateStruct.year,
                timeStruct.hours,
                timeStruct.minutes,
                timeStruct.seconds);
  display.setCursor(0, 10);
  display.println("Temp: " + String(temp) + " C");
  display.setCursor(0, 20);
  display.println("Hum: " + String(humidity) + " %");
  display.setCursor(0, 30);
  display.println("Weight: ");
  display.setCursor(0, 40);
  display.print(weight);
  display.display();
  delay(250);
}
}

As you're using two I2C interface (why by the way?) you must not be using an Arduino UNO but you failed to mention the board you're using.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.