|
- #include "scale.h"
-
- void Scale::init() {
- scaled_weight = EEPROM.readDouble(e_scale);
- int gain = EEPROM.readInt(e_gain);
-
- hx711.begin(out, clck, gain);
- offset = init_reading();
- }
-
- long Scale::init_reading() {
- hx711.read_average(20);
- return hx711.read_average(NUMBER_OF_READINGS);
- }
-
- void Scale::read() {
- raw = hx711.read();
- actual_gram = (raw - offset) / scaled_weight;
-
- if (abs(actual_gram - average_gram) > EPSILON) {
- sum = 0;
- count = 0;
- sum_raw = 0;
- average_raw = raw;
- average_gram = actual_gram;
- }
- else {
- sum += actual_gram;
- sum_raw += raw;
- count++;
- average_gram = sum / count;
- average_raw = sum_raw / count;
- }
- }
-
- void Scale::tare() {
- offset = average_raw;
- }
-
- void Scale::calibrate() {
- scaled_weight = (raw - offset) / get_calibration_weight();
- EEPROM.updateDouble(e_scale, scaled_weight);
- }
|