Penjelasan Program Absensi RFID dan ESP32 (Uji Kompetensi Edition) - 7. variable

Mereka adalah variabel global yang dideklarasikan di luar fungsi setup() dan loop(), dan mereka bekerja sama untuk mengontrol alur program, terutama yang berhubungan dengan waktu.


1. unsigned long previousMillis = 0;

Penjelasan Detail:

Analogi: Bayangkan Anda sedang merebus telur. Anda melihat jam dan mencatat waktu saat Anda memasukkan telur (previousMillis = millis()). Lalu, Anda sesekali melihat jam lagi (millis()) dan membandingkannya dengan catatan awal Anda untuk tahu apakah sudah 7 menit.


2. bool delayMeas = false;

Penjelasan Detail:

Analogi: Ini seperti lampu lalu lintas. false adalah lampu hijau (boleh lewat/baca kartu), dan true adalah lampu merah (harus berhenti/tunggu).


3. int value = 0;

Penjelasan Detail:

Jika Anda teliti memeriksa seluruh kode yang Anda berikan, variabel value tidak pernah digunakan di mana pun setelah dideklarasikan.


Hubungan Ketiganya dalam Program

previousMillis dan delayMeas bekerja sama untuk menciptakan sistem jeda yang tidak memblokir program:

  1. Kartu dibaca.
  2. delayMeas diubah menjadi true. Lampu merah menyala.
  3. Waktu saat ini disimpan di previousMillis. Pencatatan waktu dimulai.
  4. Di loop berikutnya, program melihat lampu merah (delayMeas == true), lalu mengecek apakah (waktu sekarang - waktu pencatatan) sudah 2 detik?.
  5. Jika belum, loop berlanjut ke pengecekan lain (seperti client.loop()).
  6. Jika sudah 2 detik, delayMeas diubah kembali menjadi false. Lampu hijau menyala. Sistem siap membaca kartu lagi.

Kesimpulan

Fungsi reconnect() adalah sistem keandalan yang dirancang dengan sangat baik:

  1. Terus Mencoba: Tidak akan menyerah sampai berhasil.
  2. Feedback Jelas: Memberi tahu pengguna (melalui LED/Buzzer) dan developer (melalui Serial Monitor) tentang statusnya.
  3. Penanganan Error Cerdas: Membedakan antara kesalahan fatal (yang membutuhkan restart) dan kesalahan sementara (yang hanya perlu jeda).
  4. Melengkapi Kembali: Memastikan untuk berlangganan ulang ke topik penting setelah berhasil terhubung kembali.