#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <HX711.h>
#define BUTTON1 18
#define BUTTON2 19
#define BUTTON3 13
#define BUTTON4 14
const int LOADCELL_DOUT_PIN = 16;
const int LOADCELL_SCK_PIN = 17;
LiquidCrystal_I2C LCDDisplay(0x27,16,2);
HX711 MyScale;
unsigned int WeightValue;
unsigned long TimeCount;
byte Mode=0;
void DisplayMode0()
{
LCDDisplay.clear();
LCDDisplay.print("1.MSSV 2:TEN");
LCDDisplay.setCursor(0,1);
LCDDisplay.print("3.CAN NANG");
}
void DisplayMode1()
{
LCDDisplay.clear();
LCDDisplay.print("12345");
LCDDisplay.setCursor(0,1);
LCDDisplay.print("67890");
}
void DisplayMode2()
{
LCDDisplay.clear();
LCDDisplay.print("T.HUY - VAN XUAN");
LCDDisplay.setCursor(0,1);
LCDDisplay.print("VAN QUANG");
}
void DisplayWeight()
{
WeightValue=MyScale.get_units(1);
LCDDisplay.setCursor(5,1);
LCDDisplay.print(WeightValue/1000);
LCDDisplay.print(".");
LCDDisplay.print((WeightValue%1000)/100);
LCDDisplay.print("Kg");
}
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
pinMode(BUTTON1,INPUT_PULLUP);
pinMode(BUTTON2,INPUT_PULLUP);
pinMode(BUTTON3,INPUT_PULLUP);
pinMode(BUTTON4,INPUT_PULLUP);
LCDDisplay.init();
LCDDisplay.backlight();
DisplayMode0();
MyScale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
MyScale.set_scale(0.420); //5kg
MyScale.tare();
TimeCount=millis();
}
void loop() {
// put your main code here, to run repeatedly:
if(millis()-TimeCount>500)
{
TimeCount=millis();
if(Mode==3) DisplayWeight();
}
if(digitalRead(BUTTON1)==LOW)
{
delay(100);
while(digitalRead(BUTTON1)==LOW);
DisplayMode1();
Mode=1;
}
if(digitalRead(BUTTON2)==LOW)
{
delay(100);
while(digitalRead(BUTTON2)==LOW);
DisplayMode2();
Mode=2;
}
if(digitalRead(BUTTON3)==LOW)
{
delay(100);
while(digitalRead(BUTTON3)==LOW);
LCDDisplay.clear();
LCDDisplay.print("CAN NANG:");
Mode=3;
}
if(digitalRead(BUTTON4)==LOW)
{
delay(100);
while(digitalRead(BUTTON4)==LOW);
DisplayMode0();
Mode=0;
}
}