#include <HX711.h>
#include <TM1637.h>
#define TACT_SW_PIN 2
#define TM1637_A_CLK_PIN 4
#define TM1637_A_DIO_PIN 5
#define TM1637_B_CLK_PIN 6
#define TM1637_B_DIO_PIN 7
#define TM1637_DIGIT 4
#define HX711_SCK_PIN A0
#define HX711_DT_PIN A1
#define HX711_OFFSET 2.381
TM1637 TM1, TM2;
HX711 scale;
volatile long tare = 0;
void callbackTactSw() {
tare = scale.read() * HX711_OFFSET;
}
void setup() {
TM1.begin(TM1637_A_CLK_PIN, TM1637_A_DIO_PIN, TM1637_DIGIT);
TM1.displayClear();
TM1.setBrightness(7);
TM2.begin(TM1637_B_CLK_PIN, TM1637_B_DIO_PIN, TM1637_DIGIT);
TM2.displayClear();
TM2.setBrightness(7);
scale.begin(HX711_DT_PIN, HX711_SCK_PIN);
attachInterrupt(digitalPinToInterrupt(TACT_SW_PIN), callbackTactSw, FALLING);
}
void loop() {
long weight = scale.read() * HX711_OFFSET;
TM1.displayInt(weight);
if ((weight - tare) < -1000) {
TM2.displayFloat((weight - tare) / 100, 1);
} else {
TM2.displayInt(weight - tare);
}
delay(100);
}