#include <TinyWireM.h>
#include <Tiny4kOLED.h>
#include <HX711.h>
HX711 loadcell;
//#include <HX711_ADC.h>
//HX711_ADC LoadCell(3, 1);
const long LOADCELL_OFFSET = 50682624;
const long LOADCELL_DIVIDER = 5895655;
int running = false;
void intro() {
oled.clear();
oled.on();
oled.setFont(FONT8X16);
oled.setCursor(0, 0);
oled.print("Digital scale");
delay(1000);
oled.clear();
}
void setup() {
// put your setup code here, to run once:
pinMode(4, INPUT_PULLUP);
oled.begin();
oled.clear();
loadcell.begin(3, 1);
loadcell.set_scale(0.42);
//loadcell.set_offset(2100);
loadcell.tare();
loadcell.power_down();
//LoadCell.begin();
//LoadCell.start(1000);
//LoadCell.setCalFactor(0.42);
start();
}
void start() {
running = true;
intro();
loadcell.power_up();
delay(300);
loadcell.tare();
}
int lm = 0;
bool btnon = false;
int laston = 0;
int pressed = 0;
void loop() {
// put your main code here, to run repeatedly:
if (running) {
if (lm > 20) {
oled.setCursor(0, 4);
//LoadCell.update();
int d = loadcell.get_units(10);
//oled.print(millis());
oled.print(d);
oled.print("g ");
lm = 0;
}
lm++;
if (!btnon && !digitalRead(4)) {
btnon = true;
//laston = millis();
loadcell.tare();
lm = 21;
pressed = millis();
}
if (btnon && digitalRead(4)) {
//if (millis() - laston > 2) {
btnon = false;
loadcell.tare();
lm = 21;
return;
/*} else {
laston = millis();
}*/
}
if (btnon && (millis() - pressed) > 4000) {
oled.off();
loadcell.power_down();
running = false;
btnon = false;
delay(1000);
}
delay(10);
//oled.clear();
} else {
if (!digitalRead(4)) {
//delay(100);
//if (digitalRead(4)) return;
start();
} else {
//delay(1000);
}
}
}