//LCD
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Servo
#include <ESP32Servo.h>
const int pin_servo = 12;
Servo servo;
//HX711
#include <Arduino.h>
#include "HX711.h"
const int LOADCELL_DOUT_PIN = 13;
const int LOADCELL_SCK_PIN = 14;
float kalibrasi = 1;
HX711 scale;
//Pushbutton
int pin_pb = 15;
//Set
int gram_maks = 2500;
//Deklarasi
float gram = 0;
int halaman = 1;
int hold_pb = 0;
void setup() {
//Serial
Serial.begin(115200);
//HX711
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(kalibrasi);
scale.tare();
//Servo
servo.attach(pin_servo, 500, 2400);
servo.write(0);
//PB
pinMode(pin_pb, INPUT);
//LCD
lcd.init();
lcd.backlight();
lcd.setCursor(2,0);
lcd.print("Khrisna");
lcd.setCursor(2,1);
lcd.print("082131212001");
delay(4000);
lcd.clear();
}
void loop(){
//Baca HX711
//HX711
gram = scale.get_units(), 1;
Serial.print("Gram: ");
Serial.println(gram);
//PB
//Jika telah menaruh wadah
if(halaman == 4){
if(digitalRead(pin_pb) == HIGH){
//Menuju pengisian
lcd.clear();
halaman = 5;
} else {
hold_pb = 0;
}
} else {
//Jika ditekan selama 3 detik
if(digitalRead(pin_pb) == HIGH){
//Menghitung
hold_pb = hold_pb + 1;
Serial.println(hold_pb);
} else {
hold_pb = 0;
}
}
//Jika sudah ditekan selama 3 detik
if(hold_pb >= 30){
//Menuju registrasi
lcd.clear();
hold_pb = 0;
halaman = 8;
}
//Standby
if(halaman == 1){
//LCD
lcd.setCursor(2,0);
lcd.print("SILAHKAN TAP");
lcd.setCursor(4,1);
lcd.print("KTP ANDA");
}
//KTP Ada
if(halaman == 2){
//LCD
lcd.setCursor(6,0);
lcd.print("KTP");
lcd.setCursor(3,1);
lcd.print("TERDAFTAR");
//Delay
delay(2000);
lcd.clear();
halaman = 4;
}
//KTP Tidak Ada
if(halaman == 3){
//LCD
lcd.setCursor(3,0);
lcd.print("KTP TIDAK");
lcd.setCursor(3,1);
lcd.print("TERDAFTAR");
//Delay
delay(2000);
lcd.clear();
halaman = 1;
}
//Wadah
if(halaman == 4){
//LCD
lcd.setCursor(1,0);
lcd.print("LETAKAN WADAH");
lcd.setCursor(1,1);
lcd.print("& TEKAN TOMBOL");
}
//Proses Pengisian
if(halaman == 5){
//LCD
lcd.setCursor(4,0);
lcd.print("PROSES");
lcd.setCursor(3,1);
lcd.print("PENGISIAN");
//Servo
servo.write(60);
//Jika gram terpenuhi
if(gram >= gram_maks){
//Servo
servo.write(0);
//Ke selesai
halaman = 6;
}
}
//Selesai
if(halaman == 6){
//LCD
lcd.setCursor(4,0);
lcd.print("SELESAI");
lcd.setCursor(2,1);
lcd.print("TERIMAKASIH");
//Servo
servo.write(0);
//Delay
delay(2000);
lcd.clear();
halaman = 1;
}
//Sudah Mengambil
if(halaman == 7){
//LCD
lcd.setCursor(5,0);
lcd.print("SUDAH");
lcd.setCursor(4,1);
lcd.print("DIAMBIL");
//Delay
delay(2000);
lcd.clear();
halaman = 1;
}
//Proses registrasi
if(halaman == 8){
//LCD
lcd.setCursor(3,0);
lcd.print("REGISTRASI");
lcd.setCursor(0,1);
lcd.print("SILAHKAN TAP KTP");
}
//Delay
delay(500);
}