#include <LiquidCrystal_I2C.h>
#include <Wire.h>
LiquidCrystal_I2C lcd(0x27, 16,2);
LiquidCrystal_I2C LCD = LiquidCrystal_I2C(0x27, 16, 2);
// inialisasi masing2 pin
const int sensorNonLogam = 12; //Sensor Non Logam Push Button Kuning
const int sensorLogam = 14; //Sensor Logam Push Button Hijau
const int pinReset = 13; //Push Button Reset
const int ledPinK = 19; //KUNING
const int ledPinM = 23; //MERAH
const int ledPinH = 18; //HIJAU
const int conveyor = 4; //ORANGE
const int buzzer = 5;
int potensio = 2;
// inialisasi masing2 variabel
int logam = 0;
int nonlogam = 0;
int kondisi1 = 0;
int kondisi2 = 0;
int val = 0;
int bataslogam = 1;
int batasnonlogam = 1;
#define BLYNK_TEMPLATE_ID "TMPLvEjHToZM"
#define BLYNK_TEMPLATE_NAME "Barang"
#define BLYNK_AUTH_TOKEN "lg05WL0Mq0cR0DffbH4Yl_kiRLQYmadY"
/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void myTimerEvent() {
{
Blynk.virtualWrite(V0, logam);
}
{
Blynk.virtualWrite(V2, nonlogam);
}
}
BLYNK_WRITE(V1)
{
int pinValue = param.asInt();
bataslogam=pinValue;
}
BLYNK_WRITE(V4)
{
int pinValue = param.asInt();
batasnonlogam=pinValue;
}
void setup() {
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
pinMode(ledPinM,OUTPUT);
pinMode(ledPinH, OUTPUT);
pinMode(ledPinK, OUTPUT);
pinMode(sensorNonLogam,INPUT_PULLUP);
pinMode(sensorLogam, INPUT_PULLUP);
pinMode(pinReset, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
pinMode(conveyor, OUTPUT);
pinMode(potensio, INPUT);
lcd.init();
lcd.backlight();
tone(buzzer,1000);
delay(100);
noTone(buzzer);
tone(buzzer,1500);
delay(100);
noTone(buzzer);
tone(buzzer,2000);
delay(100);
noTone(buzzer);
tone(buzzer,2500);
delay(100);
noTone(buzzer);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" ALAT PENGHITUNG");
delay(500);
lcd.setCursor(0, 1);
lcd.print(" JUMLAH BARANG ");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" DIRANCANG OLEH ");
delay(500);
lcd.setCursor(0, 1);
lcd.print(" KELOMPOK 25");
delay(500);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" SYSTEM READY ");
delay(2000);
Serial.begin(115200);
timer.setInterval(1000L, myTimerEvent);
}
void loop() {
if(digitalRead(sensorNonLogam)==LOW){
nonlogam++;
digitalWrite(ledPinH,HIGH);
digitalWrite(ledPinM, LOW);
tone(buzzer,1000);
}
if(digitalRead(sensorLogam)==LOW){
logam++;
digitalWrite(ledPinH,HIGH);
digitalWrite(ledPinM, LOW);
tone(buzzer,1000);
}
if(digitalRead(pinReset)==LOW){
logam=0;
nonlogam=0;
tone(buzzer,2000);
}
if(logam >= bataslogam && nonlogam >= batasnonlogam){
digitalWrite(ledPinM, LOW);
digitalWrite(ledPinH, LOW);
digitalWrite(ledPinK,HIGH);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("JUMLAH BARANG");
lcd.setCursor(0,1);
lcd.print("MAXIMAL");
delay(150);
digitalWrite(ledPinK,LOW);
delay(200);
digitalWrite(ledPinK,HIGH);
delay(150);
digitalWrite(ledPinK,LOW);
delay(200);
tone(buzzer,1000);
delay(200);
noTone(buzzer);
delay(100);
tone(buzzer,1000);
delay(200);
noTone(buzzer);
delay(100);
tone(buzzer,1000);
delay(200);
noTone(buzzer);
delay(100);
tone(buzzer,1000);
delay(200);
noTone(buzzer);
delay(100);
digitalWrite(conveyor, LOW);
digitalWrite(potensio, LOW);
tone(buzzer,1000);
}
else{
val = analogRead(potensio);
digitalWrite(conveyor,HIGH);
delay(val);
digitalWrite(conveyor,LOW);
delay(val);
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("LOGAM:");
lcd.println(logam);
lcd.setCursor(0, 1);
lcd.print("NON LOGAM:");
lcd.println(nonlogam);
delay(1000);
digitalWrite(ledPinM, HIGH);
digitalWrite(ledPinK, LOW);
digitalWrite(ledPinH, LOW);
noTone(buzzer);
}
Blynk.run();
timer.run();
}