#include <Arduino.h>
#include "HX711.h"
#include "soc/rtc.h"
#include <Servo.h>
float weightGm;
boolean fillflag=false;
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 16;
const int LOADCELL_SCK_PIN = 4;
HX711 scale;
Servo myservo;
int pos = 0;
void setup() {
Serial.begin(115200);
myservo.attach(13);
//rtc_clk_cpu_freq_set(RTC_CPU_FREQ_80M);
Serial.println("HX711 testing");
Serial.println("Initializing the scale");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("Before setting up the scale:");
Serial.print("read: \t\t");
// print a raw reading from the ADC
Serial.println(scale.read());
Serial.print("read average: \t\t");
// print the average of 20 readings from the ADC
Serial.println(scale.read_average(20));
Serial.print("get value: \t\t");
// print the average of 5 readings from the ADC minus the tare weight (not set yet)
Serial.println(scale.get_value(5));
Serial.print("get units: \t\t");
// print the average of 5 readings from the ADC minus tare weight (not set) divided by the SCALE parameter (not set yet)
Serial.println(scale.get_units(5), 1);
scale.set_scale(0.42);
//scale.set_scale(-471.497);
// this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare();
// reset the scale to 0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read());
// print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(10));
// print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5));
// print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1);
// print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale
Serial.println("Readings:");
}
void loop() {
// Serial.print("one reading:\t");
// Serial.print(scale.get_units(), 1);
// Serial.print("\t| average:\t");
// Serial.println(scale.get_units(10), 2);
weightGm = round(scale.get_units(10));
Serial.println("WEIGHT : "+(String)weightGm +"g");
if(weightGm <1000){fillflag=false;}
if(weightGm >3000){fillflag=true;}
if(fillflag == false){
myservo.write(0);
//servo open
}
else {
myservo.write(90);
//servo close
}
scale.power_down();
// put the ADC in sleep mode
delay(3000);
scale.power_up();
}