#include <Wire.h>
#include <WiFi.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_SSD1306.h>
#include <MFRC522.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET 4
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int dataInt;
int pinBuzzer = 33;
int pb = 14;
bool typeData = false;
#define RST_PIN 0
#define SS_PIN 5
MFRC522 mfrc522(SS_PIN, RST_PIN);
void setup() {
Serial.begin(115200);
lcd.begin(20, 4);
lcd.init();
lcd.setCursor(0, 0);
lcd.setBacklight(255);
lcd.print("Absen Connecting");
WiFi.mode(WIFI_STA);
pinMode(pinBuzzer, OUTPUT);
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 Gagal"));
for (;;)
;
}
display.display();
pinMode(pb, INPUT_PULLUP);
// Setup RFID
mfrc522.PCD_Init();
}
void loop() {
Serial.println("Scan Wifi..");
int Networks = WiFi.scanNetworks();
if (Networks == 0) {
Serial.println("No Found Wifi");
} else {
Serial.println(Networks);
Serial.println("Networks Found!..");
for (int i = 0; i < Networks; i++) {
Serial.println(WiFi.SSID(i));
Serial.println(WiFi.RSSI(i));
delay(10);
}
}
if (digitalRead(pb) == 0) {
typeData = !typeData;
digitalWrite(pinBuzzer, HIGH);
delay(1000);
digitalWrite(pinBuzzer, LOW);
delay(200);
}
if (typeData == false) {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(F("Absen"));
display.setCursor(0, 21);
display.println(F("Keluar"));
display.display();
} else {
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println(F("Absen"));
display.setCursor(0, 21);
display.println(F("Masuk"));
display.display();
}
// RFID card detection and read
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
// Display RFID card UID on OLED
display.clearDisplay();
display.setTextSize(2);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.print(F("Card UID:"));
display.setCursor(0, 21);
display.print(F("0x"));
for (byte i = 0; i < mfrc522.uid.size; i++) {
display.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
display.print(mfrc522.uid.uidByte[i], HEX);
}
display.display();
// Wait for a moment
delay(2000);
// Clear the display
display.clearDisplay();
display.display();
// Reset the RFID reader to read new cards
mfrc522.PICC_HaltA();
mfrc522.PCD_StopCrypto1();
}
}