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);
}
}