#include<HX711.h>;
HX711 lc;
const uint8_t DOUT_PIN = A0;
const uint8_t SCK_PIN = A1;
boolean ready_to_read = 0;
int full_scale = 0;
int num_mass = 0;
int num_meas = 0;
float mass;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
lc.begin(DOUT_PIN, SCK_PIN);
pinMode(13, OUTPUT);
// }
// void loop() {
// put your main code here, to run repeatedly:
Serial.println("\n\nWelcome!");
while(Serial.available()) Serial.read();
Serial.println("Premi enter per iniziare...");
while(Serial.available()==0);
// Serial.println("Digita il fondoscala della cella di carico in [kg]...");
fondo_scala_input:
while(Serial.available()) Serial.read();
Serial.print("Fondo scala [kg]: ");
while (Serial.peek() != '\n'){
if (Serial.available())
{
full_scale = Serial.parseInt();
}
}
if(full_scale==0) goto fondo_scala_input;
Serial.print(full_scale);Serial.println(" kg");
// Serial.println("Quanti provini vuoi misurare?");
num_mass_input:
while(Serial.available()) Serial.read();
Serial.print("n° provini: ");
while (Serial.peek() != '\n'){
if (Serial.available())
{
num_mass = Serial.parseInt();
}
}
if(num_mass==0) goto num_mass_input;
Serial.println(num_mass);//Serial.println(" kg");
// Serial.println("Quante misurazioni per provino?");
num_meas_input:
while(Serial.available()) Serial.read();
Serial.print("n° misurazioni per provino: ");
while (Serial.peek() != '\n'){
if (Serial.available())
{
num_meas = Serial.parseInt();
}
}
if(num_meas==0) goto num_meas_input;
Serial.println(num_meas);
while(Serial.available()) Serial.read();
long measures [num_mass][num_meas];
float masses[num_mass];
for (int i=0; i<num_mass; i++){
digitalWrite(13, ready_to_read);
while(Serial.available()) Serial.read();
mass_input:
Serial.print("\n\tMassa del provino n° ");Serial.print(i+1);Serial.print(" [kg]: ");
float mass = 0;
while (Serial.peek() != '\n'){
if (Serial.available())
{
mass = Serial.parseFloat();
}
}
if (mass==0) goto mass_input;
masses[i]=mass;
Serial.println(mass);
while(Serial.available()) Serial.read();
for (int j=0; j<num_meas; j++){
digitalWrite(13, 1);
delay(1000);
// Serial.println("Pronto per la misura");
while (Serial.available()) Serial.read();
Serial.println("\nPosiziona il provino e premi enter\n");
while (Serial.available() == 0);
while (Serial.available()) Serial.read();
Serial.print("Provino da "); Serial.print(masses[i]);
Serial.print(" kg, \n\tMisura n° ");Serial.print(j+1);
Serial.print(" : ");
measures[i][j] = lc.read_average(10);
Serial.println(measures[i][j]);
Serial.print("\tSolleva il provino...");
long read_check = lc.read_average(5);
digitalWrite(13, 0);
while(! (read_check < measures[i][j]/2)) read_check = lc.read_average(5);
Serial.println("Ok!");
// while (Serial.available()) Serial.read();
// Serial.println("togliere il provino e premere enter\n");
// while (Serial.available() == 0);
delay(1000);
}
}
Serial.println("Measures: ");
for (int i=0; i<num_mass; i++){
for (int j=0; j<num_meas; j++){
Serial.print(measures[i][j]);
Serial.print(" ");
}
Serial.print("\n");
}
Serial.println("============");
}
void loop() {
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
cell1:VCC
cell1:DT
cell1:SCK
cell1:GND