#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HX711.h>
// Pins für die Datenleitungen der Gewichtssensoren
#define DOUT_SENSOR_1 2
#define DOUT_SENSOR_2 3
#define DOUT_SENSOR_3 4
#define DOUT_SENSOR_4 5
// Pins für die Clockleitungen der Gewichtssensoren
#define CLK_SENSOR_1 6
#define CLK_SENSOR_2 7
#define CLK_SENSOR_3 8
#define CLK_SENSOR_4 9
// Adresse des LCD-Displays
#define I2C_ADDR 0x27
// Größe des Displays (20x4)
#define LCD_COLS 20
#define LCD_ROWS 4
// Initialisiere das LCD-Objekt mit der I2C-Adresse und den Display-Abmessungen
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLS, LCD_ROWS);
// HX711-Objekte für jeden Sensor
HX711 scale1;
HX711 scale2;
HX711 scale3;
HX711 scale4;
// VARIABLES
float ratio = 1.05;
void setup() {
// Initialisiere das LCD-Display
lcd.init();
// Initialisiere die HX711-Sensoren
scale1.begin(DOUT_SENSOR_1, CLK_SENSOR_1);
scale2.begin(DOUT_SENSOR_2, CLK_SENSOR_2);
scale3.begin(DOUT_SENSOR_3, CLK_SENSOR_3);
scale4.begin(DOUT_SENSOR_4, CLK_SENSOR_4);
// Kalibriere die HX711-Sensoren (falls erforderlich)
// scale1.set_scale();
// scale1.tare();
// scale2.set_scale();
// scale2.tare();
// scale3.set_scale();
// scale3.tare();
// scale4.set_scale();
// scale4.tare();
}
void loop() {
// Lese die Gewichtswerte von jedem Sensor
float weight_1 = scale1.get_units() / ratio;
float weight_2 = scale2.get_units() / ratio;
float weight_3 = scale3.get_units() / ratio;
float weight_4 = scale4.get_units() / ratio;
// Aktualisiere die Anzeige auf dem LCD-Display
lcd.setCursor(0, 0);
lcd.print("Sensor 1: ");
lcd.print(weight_1);
lcd.print(" g");
lcd.setCursor(0, 1);
lcd.print("Sensor 2: ");
lcd.print(weight_2);
lcd.print(" g");
lcd.setCursor(0, 2);
lcd.print("Sensor 3: ");
lcd.print(weight_3);
lcd.print(" g");
lcd.setCursor(0, 3);
lcd.print("Sensor 4: ");
lcd.print(weight_4);
lcd.print(" g");
delay(250);
}