#include <stdio.h>
#include <EEPROM.h>
//#include "HX711.h"
//#include <HX711_ADC.h>
#define GAIN_128 25
#define GAIN_64 27
#define NUMBER_OF_HX711 11
#define M 100 //Anzahl Messwerte pro Messstelle
// Pinbelegungen für CLK und DAT der Sensoren
const int HX711_dout[NUMBER_OF_HX711] = {22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42};
const int HX711_sck[NUMBER_OF_HX711] = {23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43};
const int doutPin = 22;
const int sckPin = 23;
void setup() {
Serial.begin(57600);
for(int a = 0; a < NUMBER_OF_HX711; a++){
pinMode(HX711_dout[a], INPUT);
pinMode(HX711_sck[a], OUTPUT);
}
unsigned long readHX711(int j);
void print_Messdaten(unsigned long tab_Messdaten_raw[][NUMBER_OF_HX711]);
}
void loop() {
unsigned long tab_Messdaten_raw[M][NUMBER_OF_HX711];
int choice;
//while(1);
/*Serial.println("Bitte wählen Sie eine Option (1-11) für die Kalibrierung, oder 0 zum Beenden:");
Serial.println("Option 1: Messen");
Serial.println("Option 2: Messdaten anzeigen");
Serial.println("Option 3: tba");*/
while (!Serial.available()) {
// Warten, bis eine Eingabe über die serielle Schnittstelle erfolgt
}
choice = Serial.parseInt();
switch (choice) {
case 0:
Serial.println();
Serial.println("Programm wird beendet.");
break;
case 1:
//tab_Messdaten_raw = ;
for(int i = 0; i < M; i++){
Serial.println();
Serial.print("Messung ");
Serial.println(i + 1);
for(int j = 0; j < NUMBER_OF_HX711; j++){
unsigned long raw = readHX711(j);
//Serial.print(" |Messstelle ");
//Serial.print(j + 1);
//Serial.print(": ");
//Serial.print(raw);
tab_Messdaten_raw[i][j] = raw;
delay(20);
}
}
Serial.println();
Serial.println("Messung beendet");
//Serial.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
delay(1000);
break;
case 2:
print_Messdaten(tab_Messdaten_raw);
break;
default:
Serial.println("Ungültige Eingabe!");
break;
}
}
unsigned long readHX711(int j){
unsigned long data = 0;
uint8_t dout;
while(digitalRead(HX711_dout[j])){} // wait until value is available
for (uint8_t i=0; i<GAIN_128; i++){ //highest Gain
//delayMicroseconds(1); // uncomment for fast MCUs
digitalWrite(HX711_sck[j], 1);
//delayMicroseconds(1); // uncomment for fast MCUs
digitalWrite(HX711_sck[j], 0);
if (i < (24)){
dout = digitalRead(HX711_dout[j]);
data = (data << 1) | dout;
}
}
data = data ^ 0x800000; // flip bit 23
return data;
}
void print_Messdaten(unsigned long tab_Messdaten_raw[][NUMBER_OF_HX711]){
for(int i = 0; i < M; i++){
Serial.println();
Serial.print("Messung ");
Serial.print(i +1);
for(int j = 0; j < NUMBER_OF_HX711; j++){
Serial.print(" | ");
Serial.print(tab_Messdaten_raw[i][j]);
}
}
}
void powerDown(){
digitalWrite(sckPin, LOW);
digitalWrite(sckPin, HIGH);
}
void powerUp(){
digitalWrite(sckPin, LOW);
}