#include "HX711_ADC.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);
HX711_ADC LoadCell(3, 2);
const int pir = 4;
const int piezo = 6;
const int nyala = 5;
const int mati = 0;
const int taree = 1;
int in = 0;
bool deviceOn = false;
bool pirState = false;
bool lastPirState = false;
void setup() {
pinMode(pir, INPUT);
pinMode(piezo, OUTPUT);
pinMode(nyala, INPUT_PULLUP);
pinMode(mati, INPUT_PULLUP);
pinMode(taree, INPUT_PULLUP);
lcd.begin(16, 2);
LoadCell.begin();
LoadCell.start(1000);
LoadCell.setCalFactor(0.42);
digitalWrite(pir,LOW);
digitalWrite(piezo,LOW);
}
void loop() {
if (digitalRead(taree) == LOW) {
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Kalibrasi...");
delay(1000);
LoadCell.start(1000);
lcd.clear();
} else {
pirState = digitalRead(pir)== HIGH;
if (pirState && !lastPirState) {
digitalWrite(piezo, HIGH);
in++;
delay(100);
} else {
digitalWrite(piezo, LOW);
}
lastPirState = pirState;
if (digitalRead(nyala) == LOW) {
deviceOn = true;
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Mesin Nyala");
delay(2000);
lcd.clear();
lcd.setCursor(4, 0);
lcd.print("Kelompok");
lcd.setCursor(7, 1);
lcd.print("C3");
delay(2000);
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Hitung Jumlah");
lcd.setCursor(0, 1);
lcd.print("dan berat Baglog");
delay(2000);
lcd.clear();
in = 0;
}
if (digitalRead(mati) == LOW) {
deviceOn = false;
lcd.clear();
lcd.setCursor(3, 0);
lcd.print("Mesin Mati");
delay(1000);
lcd.clear();
digitalWrite(pir,LOW);
digitalWrite(piezo,LOW);
in = 0;
return;
}
if (!deviceOn) {
return;
}
if (in >= 3) {
deviceOn = false;
lcd.clear();
lcd.setCursor(2, 0);
lcd.print("Maks 3 Unit");
lcd.setCursor(3, 1);
lcd.print("Mesin Mati");
delay(2000);
lcd.clear();
in = 0;
return;
}
LoadCell.update();
float i = LoadCell.getData();
lcd.setCursor(1, 0);
lcd.print("Jumlah: ");
lcd.setCursor(9, 0);
lcd.print(in);
lcd.print(" Unit ");
lcd.setCursor(1, 1);
lcd.print("Berat : ");
lcd.setCursor(9, 1);
lcd.print(i, 0);
lcd.print(" Gram ");
}
}