#include <TM1637TinyDisplay.h>
#include <BlynkSimpleEsp32.h>
#include <WiFi.h>
const int CLK = 19;
const int DIO = 18;
#define pbmasuk 4
#define pbkeluar 2
//Blynk
#define BLYNK_TEMPLATE_ID "TMPL6ELJVDzjQ"
#define BLYNK_TEMPLATE_NAME "Ruangan 1"
#define BLYNK_AUTH_TOKEN "xpZQlnzdhi-8rWe814YSnfRUvou3EnOr"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN; //Auth Token
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = "";
BlynkTimer timer;
TM1637TinyDisplay display(CLK,DIO);
int buzz = 13;
int counter = 1;
int ledmerah = 14;
int ledhijau = 26;
void setup() {
display.begin();
Serial.begin(115200);
pinMode(buzz, OUTPUT);
pinMode(ledmerah, OUTPUT);
pinMode(ledhijau, OUTPUT);
pinMode(pbmasuk, INPUT_PULLUP);
pinMode(pbkeluar, INPUT_PULLUP);
Blynk.begin(auth, ssid, pass);
display.showString("2015344027");
delay(500);
Serial.println("Kapasitas Ruangan");
Serial.println("===========================");
}
void loop() {
int valuemasuk = digitalRead(pbmasuk);
int valuekeluar = digitalRead(pbkeluar);
Blynk.run(); //menjalankan blynk
timer.run(); //menjalankan timer
display.showNumber(counter - 1);
Blynk.virtualWrite(V0, counter - 1);
if(valuemasuk == LOW){
if(counter <= 10){
Serial.println("Orang Masuk");
Serial.print("Total orang di dalam ruangan : ");
Serial.println(counter++);
Serial.print("Sisa tempat ruangan : ");
Serial.println(11 - counter);
tone(buzz, 100, 100);
delay(500);
digitalWrite(ledhijau, HIGH);
digitalWrite(ledmerah, LOW);
Blynk.virtualWrite(V3, HIGH);
Blynk.virtualWrite(V4, LOW);
}
else {
Serial.println("Ruangan FULL!!");
delay(500);
digitalWrite(ledhijau, LOW);
digitalWrite(ledmerah, HIGH);
Blynk.virtualWrite(V0, counter);
Blynk.virtualWrite(V3, LOW);
Blynk.virtualWrite(V4, HIGH);
}
}
else if(valuekeluar == LOW){
if(counter != 1){
counter--;
if(counter == 1){
Serial.println("Ruangan Sudah Kosong");
delay(500);
tone(buzz, 1000, 100);
} else {
Serial.println("Orang Keluar");
Serial.print("Sisa tempat ruangan : ");
Serial.print(11 - counter);
Serial.println(" Orang");
tone(buzz, 1000, 100);
delay(500);
digitalWrite(ledhijau, HIGH);
digitalWrite(ledmerah, LOW);
Blynk.virtualWrite(V0, counter);
Blynk.virtualWrite(V3, HIGH);
Blynk.virtualWrite(V4, LOW);
}
}
}
}