#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_TEMPLATE_ID "TMPL6k_nJh6ZP"
#define BLYNK_TEMPLATE_NAME "capstone"
#define BLYNK_AUTH_TOKEN "52vN0bUBKtiY4njaNwUNxfd-B6MBdZxK"
#define BLYNK_PRINT Serial
BlynkTimer timer;
int led_rak_A1 = 26, led_rak_A2 = 25, led_rak_A3 = 33,
pb_rak_A1 = 13, pb_rak_A2 = 12, pb_rak_A3 = 14,
sw_pinjam_A1 = 15, sw_pinjam_A2 = 2, sw_pinjam_A3 = 4, sw_kartu = 5,
sw_kembali_A1 = 32, sw_kembali_A2 = 21, sw_kembali_A3 = 22,
sw_gerbang = 18, led_gerbang = 19, buzzer = 23,
motor = 27;
int buku_RakA = 3, total_buku_terpinjam = 0,
buku_dibaca = 0;
unsigned long waktumotorawal = 0;
const char auth[] = BLYNK_AUTH_TOKEN ;
const char ssid[] = "Wokwi-GUEST";
const char pass[] = "";
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, pass);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED){
delay(100);
Serial.print(".");
}
Serial.println("WiFi Connected!");
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, myTimerEvent);
pinMode(led_rak_A1, OUTPUT);
pinMode(led_rak_A2, OUTPUT);
pinMode(led_rak_A3, OUTPUT);
pinMode(pb_rak_A1, INPUT_PULLUP);
pinMode(pb_rak_A2, INPUT_PULLUP);
pinMode(pb_rak_A3, INPUT_PULLUP);
pinMode(sw_pinjam_A1, INPUT_PULLUP);
pinMode(sw_pinjam_A2, INPUT_PULLUP);
pinMode(sw_pinjam_A3, INPUT_PULLUP);
pinMode(sw_kartu, INPUT);
pinMode(sw_kembali_A1, INPUT_PULLUP);
pinMode(sw_kembali_A2, INPUT_PULLUP);
pinMode(sw_kembali_A3, INPUT_PULLUP);
pinMode(sw_gerbang, INPUT);
pinMode(led_gerbang, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(motor, OUTPUT);
digitalWrite(led_rak_A1, HIGH);
digitalWrite(led_rak_A2, HIGH);
digitalWrite(led_rak_A3, HIGH);
int ledState0 = digitalRead(led_rak_A1);
int ledState1 = digitalRead(led_rak_A2);
int ledState2 = digitalRead(led_rak_A3);
Blynk.virtualWrite(V0, ledState0);
Blynk.virtualWrite(V1, ledState1);
Blynk.virtualWrite(V2, ledState2);
}
void myTimerEvent() { // This loop defines what happens when timer is triggered
Blynk.virtualWrite(V5, buku_RakA);
Blynk.virtualWrite(V6, total_buku_terpinjam);
}
void loop() {
Blynk.run();
// rak buku
/*
Serial.print("Rak A: ");
Serial.print(buku_RakA);
Serial.print("\t");
*/
if (digitalRead(pb_rak_A1)==0){
digitalWrite(led_rak_A1, LOW);
int ledState0 = digitalRead(led_rak_A1);
Blynk.virtualWrite(V0, ledState0);
buku_RakA = buku_RakA - 1;
buku_dibaca = buku_dibaca + 1;
}
if (digitalRead(pb_rak_A2)==0){
digitalWrite(led_rak_A2, LOW);
int ledState1 = digitalRead(led_rak_A2);
Blynk.virtualWrite(V1, ledState1);
buku_RakA = buku_RakA - 1;
buku_dibaca = buku_dibaca + 1;
}
if (digitalRead(pb_rak_A3)==0){
digitalWrite(led_rak_A3, LOW);
int ledState2 = digitalRead(led_rak_A3);
Blynk.virtualWrite(V2, ledState2);
buku_RakA = buku_RakA - 1;
buku_dibaca = buku_dibaca + 1;
}
// peminjaman buku
/*
Serial.print("buku yang terpinjam: ");
Serial.print(total_buku_terpinjam);
Serial.print("\n");
*/
if ( (digitalRead(sw_kartu)==1) && (digitalRead(sw_pinjam_A1)==0) ){
total_buku_terpinjam = total_buku_terpinjam + 1;
buku_dibaca = buku_dibaca - 1;
}
if ( (digitalRead(sw_kartu)==1) && (digitalRead(sw_pinjam_A2)==0) ){
total_buku_terpinjam = total_buku_terpinjam + 1;
buku_dibaca = buku_dibaca - 1;
}
if ( (digitalRead(sw_kartu)==1) && (digitalRead(sw_pinjam_A3)==0) ){
total_buku_terpinjam = total_buku_terpinjam + 1;
buku_dibaca = buku_dibaca - 1;
}
// pengembalian buku
if (digitalRead(sw_kembali_A1)==0){
total_buku_terpinjam = total_buku_terpinjam - 1;
buku_RakA = buku_RakA + 1;
digitalWrite(motor, HIGH);
int ledState3 = digitalRead(motor);
Blynk.virtualWrite(V3, ledState3);
waktumotorawal = millis();
}
if (digitalRead(sw_kembali_A2)==0){
total_buku_terpinjam = total_buku_terpinjam - 1;
buku_RakA = buku_RakA + 1;
digitalWrite(motor, HIGH);
int ledState4 = digitalRead(motor);
Blynk.virtualWrite(V3, ledState4);
waktumotorawal = millis();
}
if (digitalRead(sw_kembali_A3)==0){
total_buku_terpinjam = total_buku_terpinjam - 1;
buku_RakA = buku_RakA + 1;
digitalWrite(motor, HIGH);
int ledState5 = digitalRead(motor);
Blynk.virtualWrite(V3, ledState5);
waktumotorawal = millis();
}
if (millis()-waktumotorawal >= 3000){
digitalWrite(motor, LOW);
int ledState8 = digitalRead(motor);
Blynk.virtualWrite(V3, ledState8);
}
// gerbang
if (digitalRead(sw_gerbang)==1){
digitalWrite(led_gerbang,HIGH);
digitalWrite(buzzer,HIGH);
int ledState6 = digitalRead(buzzer);
Blynk.virtualWrite(V4, ledState6);
}
else{
digitalWrite(led_gerbang,LOW);
digitalWrite(buzzer,LOW);
int ledState7 = digitalRead(buzzer);
Blynk.virtualWrite(V4, ledState7);
}
timer.run();
delay(100);
}
RFID Reader Rak A
RFID Reader Gerbang
buku belum terpinjam terdeteksi
buku terdekteksi sensor RFID
kartu user terdeteksi
buku terdekteksi sensor RFID
Peminjaman buku
Pengembalian buku
Motor DC