#include <HX711.h>
// SerialPrint als Debug
#define DEBUG 1
#if DEBUG == 1
#define debug(x) Serial.print(x)
#define debugg(x, y) Serial.print(x, y)
#define debugln(x) Serial.println(x)
#define debuggln(x, y) Serial.println(x, y)
#else
#define debug(x)
#define debugg(x, y)
#define debugln(x)
#define debugg(x, y)
#endif
/*
//// ESPnow Netzwerk
// Controller --> Reihenfolge muss mit der char-"ESP_MAC"-Reihenfolge übereinstimmen
enum ESP_Controller {
Master,
Wasser,
Solar,
Tank,
SizeOfEnumESP_Controller
};
// MAC-Adressen --> Reihenfolge muss mit der enum-"ESP_Controller"-Reihenfolge übereinstimmen
const int ESP_MAC_Master[] = {
10, // Master
20, // Wasser
30, // Solar
40 // Tank
};
const int ESP_MAC_Master[] = {0x94, 0x3C, 0xC6, 0x33, 0x68, 0x01};
const int ESP_MAC_Wasser[] = {0x94, 0x3C, 0xC6, 0x33, 0x68, 0x02};
*/
// Waage
#define SDT_pin 16
#define SCK_pin 4
HX711 WAAGE;
// Timer
unsigned long CurrMillis, PrevMillis;
int Interval = 1000;
// Variablen
long RawData;
float scale = 420; // Umrechnungsfaktor der Rohdaden in eine lesbare Einheit
long offset = 2730; // TARA 5 kg Gasflasche = 6,5 kg * scale = 2730
float kg; // Kilogramm
int g, counter = 1; // Gramm und Zähler für Anzahl Messungen
void setup() {
Serial.begin(9600);
WAAGE.begin(SDT_pin, SCK_pin);
debugln("Starte Waage...");
WAAGE.set_scale(scale);
WAAGE.set_offset(offset);
/*
for (int i = Master; i < SizeOfEnumESP_Controller; i++){
debugln(ESP_MAC[i]);
delay(500);
}
*/
}
void Datenausgabe() {
printf("Messung %02i \nRohadaten: %ld, Scale: %.0f, Offset: %.2f kg, Gas: %.3f kg \n\n", counter, RawData, scale, (offset / scale), kg);
counter++;
/*
debug(", g: ");
switch (g) {
case - 99999 ... 0:
debugln("0");
break;
case 1 ... 999:
debugln(g);
break;
case 1000 ... 99999:
int LinksVomPunkt = (g / 1000);
debug(LinksVomPunkt);
debug(".");
int RechtsVomPunkt = g - (LinksVomPunkt * 1000);
if (RechtsVomPunkt == 0) {
debugln("000");
} else {
debugln(RechtsVomPunkt);
}
break;
}
*/
}
void loop() {
if (WAAGE.is_ready()) {
////////////////////////// Durchschnittsmessung
RawData = WAAGE.read(); // RawDaten einlesen
kg = WAAGE.get_units(5); // get_units = ((read_average(#Readings) - offset)] / Scale
Datenausgabe();
}
////////////////////////// 1x messen mit Interval
/*CurrMillis = millis();
if (CurrMillis - PrevMillis >= Interval) {
RawData = WAAGE.read(); // RawDaten einlesen
kg = WAAGE.get_units(); // get_units = ((read_average(#Readings) - offset)] / Scale
g = kg * 1000; // kg in g umrechnen
Datenausgabe();
PrevMillis = CurrMillis;
Datenausgabe();
}
*/
}