LAPORAN PRAKTIKUM
INTERNET OF THINGS
IMPLEMENTASI
SISTEM KEAMANAN BERBASIS PIN 4-DIGIT MENGGUNAKAN ESP32-S3 DAN MOTOR SERVO
Disusun oleh:
Ramdani Mulyadi 24051204137
Naufal Alif
Prasetya 24051204126
Syauqi Ihsan
Ramadhan 24051204110
Luthfi Fadli
Zainuddin 24051204200
BAB I
PENDAHULUAN
1.1 Latar Belakang
Kunci konvensional pada lemari
penyimpanan atau brankas kecil bergantung pada mekanisme mekanis yang dapat
digandakan atau dibongkar paksa tanpa meninggalkan jejak digital. Sistem
kendali akses berbasis mikrokontroler menawarkan alternatif yang lebih fleksibel
karena kode akses dapat diubah kapan saja oleh pengguna tanpa mengganti
komponen kunci secara fisik.
Pada praktikum ini, ESP32-S3
dipakai sebagai pengendali sebuah sistem keamanan berbasis PIN 4-digit.
Pengguna memasukkan PIN melalui keypad matriks 4×4, sementara layar LCD 16×2
berbasis I2C menampilkan status masukan dan status sistem. Mekanisme penguncian
fisik diwakili oleh motor servo yang digerakkan melalui sinyal PWM, bergerak di
antara posisi terbuka (0°) dan posisi terkunci (180°).
Sistem bekerja dalam dua keadaan,
yaitu keadaan terbuka saat pengguna dapat menetapkan PIN baru, dan keadaan
terkunci saat pengguna harus memasukkan kembali PIN yang tersimpan agar servo
bergerak membuka kunci. Rangkaian dirancang dan diuji pada simulator Wokwi
sehingga sambungan pin, respon keypad, tampilan LCD, dan pergerakan servo dapat
diperiksa sebelum diterapkan pada perangkat fisik.
1.2 Rumusan Masalah
1. Bagaimana ESP32-S3 membaca 16
tombol keypad matriks 4×4 menggunakan delapan pin GPIO, serta bagaimana
perangkat lunak memetakan baris dan kolom menjadi karakter tombol yang ditekan?
2. Bagaimana sistem menyimpan,
membandingkan, dan mengganti PIN 4-digit yang dimasukkan pengguna, termasuk
penanganan kondisi ketika jumlah digit tidak sesuai atau PIN yang dimasukkan
tidak cocok dengan PIN tersimpan?
3. Bagaimana ESP32-S3 mengendalikan motor servo melalui sinyal PWM 50 Hz untuk menggerakkan mekanisme kunci secara bertahap antara posisi terbuka dan posisi terkunci, serta bagaimana LCD I2C menampilkan status PIN BARU, Input PIN, Mengunci, Terkunci, Membuka, Terbuka, dan PIN SALAH pada setiap tahap?
1.3 Tujuan Praktikum
1. Memahami penggunaan pin
digital ESP32-S3 sebagai masukan untuk keypad matriks 4×4 dan sebagai keluaran
PWM untuk motor servo.
2. Memahami komunikasi I2C antara
ESP32-S3 dan LCD 16×2 untuk menampilkan status PIN dan status kunci.
3. Membuat program sistem
keamanan yang dapat menetapkan PIN baru, mengunci sistem secara otomatis
setelah PIN dibuat, dan membuka kunci hanya ketika PIN yang dimasukkan sesuai
dengan PIN tersimpan.
4. Menguji kesesuaian sambungan
rangkaian dan perilaku program pada simulator Wokwi untuk beberapa skenario,
yaitu pembuatan PIN, penguncian, pembukaan dengan PIN benar, dan penolakan PIN
yang salah.
1.4 Batasan Sistem
1. PIN yang digunakan berjumlah
tepat empat digit numerik. Tombol A, B, C, D, dan * pada keypad tidak diproses
oleh program yang digunakan.
2. PIN tersimpan hanya di memori
RAM (variabel String pada program) sehingga akan hilang apabila ESP32-S3
mengalami reset atau kehilangan daya, dan rancangan ini belum menggunakan
penyimpanan non-volatile seperti EEPROM atau Flash.
3. Program tidak membatasi jumlah
percobaan PIN yang salah dan tidak menyediakan mekanisme alarm atau penguncian
sementara (lockout) setelah beberapa kali kegagalan.
4. Pergerakan servo dan sebagian
pesan LCD menggunakan delay yang bersifat blocking, sehingga pembacaan keypad
tidak diproses selama proses tersebut berlangsung.
5. Alamat I2C LCD tetap pada 0x27
sesuai konfigurasi perangkat lunak; modul LCD dengan alamat berbeda memerlukan
penyesuaian kode.
BAB II
DASAR TEORI
2.1 Keypad Matriks 4x4
Keypad matriks 4×4 menyediakan
enam belas tombol yang disusun dalam empat baris dan empat kolom, namun hanya
memerlukan delapan jalur sinyal (empat baris dan empat kolom) untuk mendeteksi
enam belas kemungkinan tombol. Mikrokontroler memindai keypad dengan memberi
sinyal pada satu jalur baris kemudian membaca keadaan setiap jalur kolom secara
bergantian; posisi baris dan kolom yang aktif bersamaan menunjukkan tombol yang
sedang ditekan.
Pada sistem ini, pemetaan tombol
diprogram sebagai angka 1–9 dan 0 pada posisi numerik, huruf A–D pada kolom
keempat, serta simbol * dan # pada baris terakhir. Perangkat lunak yang
digunakan hanya memproses tombol angka untuk memasukkan digit PIN dan tombol #
untuk mengonfirmasi PIN yang telah dimasukkan.
2.2 ESP32-S3
ESP32-S3 adalah mikrokontroler
dengan banyak pin GPIO yang dapat dikonfigurasi sebagai masukan digital,
keluaran digital, jalur I2C, maupun keluaran PWM. Pada rancangan ini, ESP32-S3
berperan sebagai pengendali tunggal yang memindai keypad, mengelola status PIN
dan status kunci, mengirim data ke LCD melalui I2C, dan membangkitkan sinyal
PWM untuk servo.
Pin 3V3 pada ESP32-S3 digunakan
untuk memasok tegangan LCD, sedangkan pin 5V dipakai untuk memasok motor servo.
Seluruh ground pada ESP32-S3, LCD, dan servo dihubungkan menjadi satu titik
ground bersama agar referensi tegangan sinyal PWM dan I2C tetap konsisten.
2.3 LCD 16x2 I2C
LCD 16×2 menampilkan dua baris
teks dengan enam belas karakter per baris. Modul LCD yang dilengkapi backpack
I2C hanya memerlukan dua jalur sinyal, yaitu SDA untuk data dan SCL untuk
clock, sehingga jumlah pin yang dipakai pada mikrokontroler jauh lebih sedikit
dibandingkan antarmuka paralel biasa. Setiap modul I2C memiliki alamat
perangkat sendiri, dan pada rancangan ini alamat yang digunakan adalah 0x27.
LCD pada sistem ini menampilkan
prompt dan status seperti PIN BARU, Input PIN, Mengunci, Terkunci, Membuka,
Terbuka, dan PIN SALAH, sehingga pengguna dapat mengikuti tahapan proses tanpa
perlu membuka kode program.
2.4 Motor Servo
Motor servo hobi dikendalikan
menggunakan sinyal PWM dengan frekuensi 50 Hz, di mana lebar pulsa menentukan
posisi sudut poros servo. Pada rancangan ini, lebar pulsa yang digunakan
berkisar antara 500 hingga 2500 mikrodetik, dengan posisi 0° mewakili keadaan
terbuka dan posisi 180° mewakili keadaan terkunci.
Agar pergerakan mekanis tidak
terjadi secara mendadak, servo digerakkan secara bertahap satu derajat setiap
langkah dengan jeda singkat di antara setiap langkah, sehingga transisi dari
satu posisi ke posisi lainnya berlangsung secara halus.
BAB III
PERANCANGAN DAN IMPLEMENTASI
3.1 Gambaran Sistem
Saat sistem pertama kali menyala,
servo berada pada posisi 0° (terbuka), status isLocked ditetapkan false, dan
LCD menampilkan prompt PIN BARU: sebagai tanda bahwa sistem menunggu pengguna
menetapkan PIN baru. Pengguna memasukkan empat digit angka melalui keypad, dan
setiap digit yang dimasukkan ditampilkan sebagai tanda bintang pada baris kedua
LCD sehingga PIN yang sebenarnya tidak terlihat pada layar.
Setelah pengguna menekan #,
program memeriksa jumlah digit yang telah dimasukkan. Jika tepat empat digit,
digit tersebut disalin menjadi PIN tersimpan dan sistem langsung menjalankan
urutan penguncian, yaitu memindahkan servo secara bertahap dari 0° menuju 180°
sambil menampilkan pesan Mengunci... kemudian Terkunci. Ketika sistem berada
pada keadaan terkunci, pengguna harus memasukkan PIN yang sama untuk membuka
kunci; PIN yang cocok akan menjalankan urutan pembukaan (servo bergerak dari
180° menuju 0°, LCD menampilkan Membuka... kemudian Terbuka), sedangkan PIN
yang tidak cocok akan menampilkan PIN SALAH dan sistem tetap terkunci.
Gambar 1. Rangkaian sistem
keamanan PIN pada Wokwi, LCD menampilkan prompt PIN BARU: pada kondisi awal
3.2 Komponen yang Digunakan
|
No. |
Komponen |
Jumlah |
Fungsi |
|
1 |
ESP32-S3 |
1 |
Mengendalikan keypad, LCD, dan
servo; menyimpan status kunci dan PIN. |
|
2 |
Keypad matriks 4×4 |
1 |
Menerima masukan digit PIN dari
pengguna. |
|
3 |
LCD 16×2 I2C |
1 |
Menampilkan prompt PIN dan
status sistem. |
|
4 |
Motor servo hobi |
1 |
Menggerakkan mekanisme kunci
fisik antara posisi terbuka dan terkunci. |
Tabel 1. Komponen sistem
keamanan PIN
3.3 Konfigurasi Pin
|
Komponen |
Pin ESP32-S3 |
Keterangan |
|
Keypad R1 / R2 / R3 / R4 |
GPIO 16 / 17 / 18 / 8 |
Baris keypad |
|
Keypad C1 / C2 / C3 / C4 |
GPIO 5 / 6 / 7 / 4 |
Kolom keypad |
|
LCD SDA |
GPIO 21 |
Jalur data I2C |
|
LCD SCL |
GPIO 20 |
Jalur clock I2C |
|
LCD VCC |
3V3 |
Suplai daya LCD |
|
Servo PWM |
GPIO 15 |
Sinyal kendali servo |
|
Servo VCC |
5V |
Suplai daya servo |
|
Ground bersama |
GND |
Referensi ground LCD, keypad,
dan servo |
Tabel 2. Pemetaan pin ESP32-S3
pada sistem keamanan PIN
Rincian sambungan tiap komponen
dan berkas konfigurasi lengkap disertakan pada bagian Lampiran.
3.4 Alur Kerja Program
Pada fungsi setup, program
menginisialisasi jalur I2C pada GPIO 21 (SDA) dan GPIO 20 (SCL), menyalakan LCD
beserta lampu latarnya, mengatur servo pada frekuensi 50 Hz dengan rentang
pulsa 500–2500 mikrodetik, dan menempatkan servo pada posisi 0°. LCD kemudian
menampilkan prompt awal PIN BARU:.
Di dalam fungsi loop, program
membaca satu tombol keypad pada satu waktu menggunakan keypad.getKey(). Ketika
tombol angka ditekan dan jumlah digit yang tersimpan pada enteredCode belum
mencapai empat, digit tersebut ditambahkan ke enteredCode dan sebuah tanda
bintang ditampilkan pada baris kedua LCD. Tombol angka tambahan diabaikan
setelah empat digit terpenuhi, sampai entri dikonfirmasi dengan #.
Ketika tombol # ditekan, program
memeriksa status isLocked. Jika sistem sedang terbuka dan tepat empat digit
telah dimasukkan, enteredCode disalin ke storedCode dan fungsi lockSafe()
dipanggil; jika jumlah digit tidak tepat empat, LCD menampilkan Buat PIN 4
Digit. Jika sistem sedang terkunci, enteredCode dibandingkan dengan storedCode;
PIN yang cocok memanggil fungsi unlockSafe(), sedangkan PIN yang tidak cocok
menampilkan PIN SALAH tanpa mengubah status kunci. Pada kedua kasus,
enteredCode dikosongkan dan baris kedua LCD dihapus setelah proses konfirmasi
selesai.
Fungsi lockSafe() mengatur
isLocked menjadi true, menampilkan Mengunci..., menggerakkan servo bertahap
dari 0° ke 180°, menampilkan Terkunci selama dua detik, lalu kembali
menampilkan Input PIN. Fungsi unlockSafe() mengatur isLocked menjadi false,
menampilkan Membuka..., menggerakkan servo bertahap dari 180° ke 0°,
menampilkan Terbuka selama dua detik, lalu kembali ke prompt PIN BARU:.
3.5 Implementasi Program
Kode berikut disusun dari
potongan program yang digunakan pada firmware ESP32-S3. Bagian pertama memuat
pustaka yang diperlukan serta konfigurasi pin.
|
#include <Wire.h> #include
<LiquidCrystal_I2C.h> #include <Keypad.h> #include
<ESP32Servo.h> #define I2C_SDA 21 #define I2C_SCL 20 byte rowPins[ROWS] = {16,
17, 18, 8}; byte colPins[COLS] = {5,
6, 7, 4}; const int servoPin = 15; Kode 1. Pustaka dan
konfigurasi pin Bagian berikutnya berisi
konfigurasi LCD, peta tombol keypad, dan variabel status sistem. LiquidCrystal_I2C
lcd(0x27, 16, 2); char keys[ROWS][COLS] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; Keypad keypad =
Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); String enteredCode =
""; String storedCode = ""; bool isLocked = false; Kode 2. Konfigurasi LCD,
peta keypad, dan variabel status Inisialisasi servo dan
pembacaan tombol dilakukan sebagai berikut. lockServo.setPeriodHertz(50); lockServo.attach(servoPin,
500, 2500); lockServo.write(0); char key =
keypad.getKey(); if (enteredCode.length()
< 4) { enteredCode += key; lcd.setCursor(enteredCode.length() - 1, 1); lcd.print('*'); } Kode 3. Inisialisasi servo
dan tampilan entri PIN sebagai tanda bintang Pergerakan servo saat
mengunci dan membuka dilakukan secara bertahap satu derajat per langkah. // Mengunci: 0 derajat
menuju 180 derajat for (int pos = 0; pos
<= 180; pos += 1) { lockServo.write(pos); delay(15); } // Membuka: 180 derajat
menuju 0 derajat for (int pos = 180; pos
>= 0; pos -= 1) { lockServo.write(pos); delay(15); } |
Kode 4. Pergerakan bertahap
servo pada proses penguncian dan pembukaan
Dengan 181 posisi dan jeda 15 ms
pada setiap posisi, satu kali pergerakan penuh dari 0° ke 180° (atau
sebaliknya) memerlukan waktu sekitar 2,7 detik. Karena lcd.print dan pergerakan
servo menggunakan delay yang bersifat blocking, pembacaan keypad tidak diproses
selama rentang waktu tersebut.
BAB IV
HASIL DAN ANALISIS
4.1 Hasil Simulasi
Pengujian dilakukan pada
simulator Wokwi dengan menjalankan seluruh alur sistem: pembuatan PIN baru,
proses penguncian otomatis, permintaan PIN saat sistem terkunci, penolakan PIN
yang salah, dan proses pembukaan ketika PIN yang benar dimasukkan. Setiap tahap
ditampilkan pada LCD dan diperiksa kesesuaiannya dengan perilaku yang
dideskripsikan pada program.
Pada tahap pertama, pengguna
memasukkan empat digit PIN baru. Setiap digit yang ditekan tampil sebagai tanda
bintang pada baris kedua LCD, sehingga nilai PIN yang sebenarnya tidak
terlihat.
Gambar 2. LCD menampilkan PIN
BARU dengan empat tanda bintang saat pengguna membuat PIN baru
Setelah tombol # ditekan dan
tepat empat digit terdeteksi, sistem langsung menjalankan proses penguncian.
LCD menampilkan Mengunci... selama servo bergerak bertahap menuju posisi 180°.
Gambar 3. LCD menampilkan
Mengunci.. saat servo bergerak menuju posisi terkunci
Ketika sistem berada pada keadaan
terkunci, LCD menampilkan prompt Input PIN dan menunggu pengguna memasukkan
kembali empat digit PIN untuk membuka kunci.
Gambar 4. LCD menampilkan
Input PIN saat sistem meminta PIN untuk membuka kunci
Pengujian dengan PIN yang tidak
sesuai dengan PIN tersimpan menampilkan pesan PIN SALAH, dan sistem tetap
berada pada keadaan terkunci tanpa menggerakkan servo.
Gambar 5. LCD menampilkan PIN
SALAH ketika PIN yang dimasukkan tidak sesuai
Ketika PIN yang dimasukkan sesuai
dengan PIN tersimpan, sistem menjalankan proses pembukaan. LCD menampilkan
Membuka... selama servo bergerak bertahap kembali menuju posisi 0°, sebelum
akhirnya menampilkan Terbuka dan kembali ke prompt PIN BARU:.
Gambar 6. LCD menampilkan
Membuka... saat servo bergerak menuju posisi terbuka setelah PIN benar
dimasukkan
Secara keseluruhan, urutan pesan
pada LCD (PIN BARU → Mengunci → Terkunci/Input PIN → PIN SALAH atau Membuka →
Terbuka) sesuai dengan logika yang dituliskan pada fungsi lockSafe() dan
unlockSafe(), sehingga pemindaian keypad, pembandingan PIN, dan pergerakan
servo berjalan pada urutan yang diharapkan
4.2 Analisis Logika Counter
|
Kondisi |
Status sebelum |
Status sesudah |
Respons sistem |
|
Sistem baru aktif |
- |
Terbuka (isLocked = false) |
Servo pada 0°; LCD menampilkan
PIN BARU:. |
|
Empat digit PIN baru
dikonfirmasi (#) |
Terbuka |
Terkunci (isLocked = true) |
storedCode diperbarui; servo
bergerak 0°→180°; LCD: Mengunci... lalu Terkunci. |
|
Jumlah digit bukan empat saat
terbuka |
Terbuka |
Terbuka |
LCD menampilkan Buat PIN 4
Digit; enteredCode dikosongkan. |
|
PIN yang dimasukkan sesuai
storedCode |
Terkunci |
Terbuka (isLocked = false) |
Servo bergerak 180°→0°; LCD:
Membuka... lalu Terbuka. |
|
PIN yang dimasukkan tidak
sesuai storedCode |
Terkunci |
Terkunci |
LCD menampilkan PIN SALAH;
servo tidak bergerak. |
Tabel 3. Logika respons sistem
berdasarkan status isLocked dan hasil pembandingan PIN
Variabel isLocked menjadi penentu
utama cabang logika pada penekanan #: nilai false mengarahkan program ke jalur
pembuatan PIN baru, sedangkan nilai true mengarahkan program ke jalur
pembandingan PIN untuk membuka kunci. Variabel enteredCode selalu dikosongkan
setelah proses konfirmasi, baik PIN diterima, ditolak, maupun jumlah digitnya
tidak sesuai, sehingga entri berikutnya selalu dimulai dari kondisi kosong.
4.3 Keterbatasan Rancangan
• PIN tersimpan bersifat
volatile karena hanya disimpan pada variabel String di RAM, sehingga PIN akan
hilang setelah ESP32-S3 mengalami reset atau kehilangan daya.
• Program tidak membatasi
jumlah percobaan PIN yang salah dan tidak menyediakan mekanisme alarm atau
penguncian sementara, sehingga percobaan PIN dapat diulang tanpa batas.
• Pergerakan servo dan
sebagian pesan LCD menggunakan delay yang bersifat blocking, sehingga keypad
tidak dapat dibaca selama proses tersebut berlangsung.
• Alamat I2C LCD tetap pada
0x27; modul LCD dengan alamat berbeda memerlukan penyesuaian kode agar dapat
terdeteksi.
• Arah pergerakan servo (0°
sebagai terbuka dan 180° sebagai terkunci) mungkin perlu dibalik tergantung
pada pemasangan mekanis servo terhadap mekanisme kunci yang sesungguhnya.
• Suplai daya servo yang
diambil langsung dari pin 5V papan ESP32-S3 berisiko menimbulkan penurunan
tegangan atau reset tak terduga apabila servo menghadapi beban mekanis yang
signifikan; suplai 5V eksternal dengan kapasitas arus memadai dapat menjadi
solusi.
BAB V
PENUTUP
5.1 Kesimpulan
Simulasi pada Wokwi menunjukkan
bahwa sistem keamanan berbasis PIN 4-digit menggunakan ESP32-S3 dapat
menjalankan fungsi dasar yang direncanakan. Keypad matriks 4×4 berhasil dibaca
sebagai masukan digit PIN, LCD I2C menampilkan prompt dan status pada setiap
tahap, serta motor servo bergerak sesuai dengan status kunci yang dikelola oleh
program.
Alur kerja sistem, yaitu
pembuatan PIN pada keadaan terbuka, penguncian otomatis setelah PIN
dikonfirmasi, serta pembandingan PIN untuk membuka kunci, berjalan sesuai
dengan logika pada fungsi lockSafe() dan unlockSafe(). Pengujian dengan PIN
yang benar maupun salah menunjukkan bahwa servo hanya bergerak membuka kunci
ketika PIN yang dimasukkan sesuai dengan PIN tersimpan, sedangkan PIN yang
salah hanya menampilkan pesan kesalahan tanpa mengubah status kunci.
5.2 Saran
- PIN sebaiknya disimpan pada memori non-volatile
seperti EEPROM atau Flash internal ESP32-S3 agar tidak hilang setelah
perangkat kehilangan daya atau di-reset.
- Mekanisme pembatasan percobaan PIN yang salah,
disertai jeda waktu atau alarm setelah beberapa kali kegagalan, perlu
ditambahkan untuk meningkatkan keamanan sistem.
- Penggunaan millis() sebagai pengganti delay() pada
pergerakan servo dan tampilan LCD dapat memungkinkan ESP32-S3 tetap
membaca keypad selama proses berlangsung.
- Suplai daya servo sebaiknya menggunakan sumber 5V
eksternal yang terpisah dari pin 5V ESP32-S3 apabila servo dipakai untuk
menggerakkan mekanisme kunci dengan beban mekanis yang nyata.
DAFTAR PUSTAKA
Espressif Systems. (n.d.).
ESP32-S3 series. https://www.espressif.com/en/products/socs/esp32-s3
Arduino. (n.d.). Keypad library.
https://www.arduino.cc/reference/en/libraries/keypad/
Arduino Libraries. (n.d.).
LiquidCrystal I2C library.
https://www.arduinolibraries.info/libraries/liquid-crystal-i2-c
Madhephaestus. (n.d.). ESP32Servo
library. GitHub. https://github.com/madhephaestus/ESP32Servo
Wokwi. (n.d.). ESP32 simulation
guide. https://docs.wokwi.com/guides/esp32
LAMPIRAN
6.1 Konfigurasi Wokwi
|
Pin ESP32-S3 |
Terhubung ke |
Fungsi |
|
GPIO 16 |
Keypad R1 |
Baris 1 keypad |
|
GPIO 17 |
Keypad R2 |
Baris 2 keypad |
|
GPIO 18 |
Keypad R3 |
Baris 3 keypad |
|
GPIO 8 |
Keypad R4 |
Baris 4 keypad |
|
GPIO 5 |
Keypad C1 |
Kolom 1 keypad |
|
GPIO 6 |
Keypad C2 |
Kolom 2 keypad |
|
GPIO 7 |
Keypad C3 |
Kolom 3 keypad |
|
GPIO 4 |
Keypad C4 |
Kolom 4 keypad |
|
GPIO 21 |
LCD SDA |
Data I2C |
|
GPIO 20 |
LCD SCL |
Clock I2C |
|
3V3 |
LCD VCC |
Suplai daya LCD |
|
GPIO 15 |
Servo PWM |
Sinyal kendali servo |
|
5V |
Servo VCC |
Suplai daya servo |
|
GND |
LCD GND, Keypad, Servo GND |
Ground bersama seluruh komponen |
Tabel 4. Konfigurasi pin
lengkap ESP32-S3 pada sistem keamanan PIN
Firmware yang digunakan
mengandalkan empat pustaka utama, yaitu Wire.h untuk komunikasi I2C,
LiquidCrystal_I2C.h untuk mengendalikan LCD, Keypad.h untuk memindai keypad
matriks, dan ESP32Servo.h untuk membangkitkan sinyal PWM servo pada ESP32-S3.
Tidak ada komentar:
Posting Komentar