#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6nsDEfaka"
#define BLYNK_TEMPLATE_NAME "latihan 5"
#define BLYNK_AUTH_TOKEN "CDV5_NNIQw_I0g69aXr9umUSs7S4NReS"
#include <WiFi.h>
#include <BlynkSimpleEsp32.h>
#include <TM1637TinyDisplay.h>

char auth[] =  BLYNK_AUTH_TOKEN; 
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan

byte pushA = 2;
byte pushB = 4;
int counter = 0;

const int CLK = 19;
const int DIO = 18;
int space = 10;

TM1637TinyDisplay display(CLK, DIO);
BlynkTimer timer;

void sendSensor(){
display.showNumber(counter);
  if(digitalRead(pushA)){
    if(counter == 0 && space == 10){
      delay(350);
      Serial.print("\nJumlah Orang Mencapai Minimum : ");
      Serial.println(counter);
      Serial.print("Space Ruangan Masih Tersedia : ");
      Serial.println(space);
      Blynk.virtualWrite(V3, "Space Ruangan Tersedia");
    }else{
      counter--;
      delay(350);
      space += 1;
      Serial.print("\nORANG KELUAR\n");
      Serial.print("Jumlah Orang : ");
      Serial.println(counter);
      Blynk.virtualWrite(V4, counter);
      Serial.print("Space : ");
      Serial.println(space);
      Blynk.virtualWrite(V5, space);
      Blynk.virtualWrite(V3, "Space Ruangan Tersedia");
    }
  }else if (digitalRead(pushB)){
    if(counter == 10 && space == 0 ){
      delay(350);
      Serial.print("\nJumlah Orang Mencapai Maksimum : ");
      Serial.println(counter);
      Serial.print("Space Ruangan habis : ");
      Serial.println(space);
      Blynk.virtualWrite(V3, "Space Ruangan habis");
    }else{
      counter++;
      space -= 1;
      Serial.print("\nORANG MASUK\n");
      Serial.print("Jumlah Orang : ");
      Serial.println(counter);
      Blynk.virtualWrite(V4, counter);
      Serial.print("Space : ");
      Serial.println(space);
      Blynk.virtualWrite(V5, space);
      Blynk.virtualWrite(V3, "Space Ruangan Tersedia");
    }
  }
}

void setup() {
  // put your setup code here, to run once:
  display.setBrightness(0x0f);
  display.setScrolldelay(100);
  Serial.begin(115200);
  pinMode(pushA, INPUT);
  pinMode(pushB, INPUT);
  Blynk.begin(auth, ssid, pass); //memulai Blynk
  timer.setInterval(1000, sendSensor); //Mengaktifkan timer untuk pengiriman data 1000ms
}

void loop() {
  Blynk.run(); //menjalankan blynk
  timer.run(); //menjalankan timer
}
esp:VIN
esp:GND.2
esp:D13
esp:D12
esp:D14
esp:D27
esp:D26
esp:D25
esp:D33
esp:D32
esp:D35
esp:D34
esp:VN
esp:VP
esp:EN
esp:3V3
esp:GND.1
esp:D15
esp:D2
esp:D4
esp:RX2
esp:TX2
esp:D5
esp:D18
esp:D19
esp:D21
esp:RX0
esp:TX0
esp:D22
esp:D23
btn1:1.l
btn1:2.l
btn1:1.r
btn1:2.r
btn2:1.l
btn2:2.l
btn2:1.r
btn2:2.r
4-Digit Display
sevseg1:CLK
sevseg1:DIO
sevseg1:VCC
sevseg1:GND
r1:1
r1:2
r2:1
r2:2