LAPORAN PRAKTIKUM
Simulasi stopwatch Digital Berbasis
Arduino Uno dengan Tampilan LCD12C pada WOKWI
Disusun oleh :
Fandy Fernanda Yapari 24051204227
Tri Rianto Utomo 24051204104
Rochmad Balya Imron Khan 24051204279
Sulthan Hamdani Sahvirdan 24051204129
BAB I
PENDAHULUAN
1.1 Latar
Belakang
Perkembangan
teknologi mikrokontroler memberikan kemudahan dalam membuat berbagai sistem
elektronik yang dapat bekerja secara otomatis dan terprogram. Mikrokontroler
dapat digunakan untuk menerima data dari perangkat input seperti tombol,
kemudian melakukan pengolahan data berdasarkan waktu dan menghasilkan keluaran
melalui perangkat output seperti layar tampilan.
Salah satu
penerapan dasar dari konsep digital input output pada mikrokontroler adalah
sistem penghitung waktu (timer), yang banyak digunakan dalam kehidupan
sehari-hari, seperti pada aplikasi olahraga, laboratorium, hingga sistem
kontrol industri sederhana. Sistem stopwatch memerlukan pengolahan input
digital berupa tombol yang harus dibaca secara responsif tanpa menghentikan
proses penghitungan waktu.
Pada
proyek ini digunakan mikrokontroler Arduino Uno untuk membaca dua buah tombol
(Start/Stop dan Reset) serta mengendalikan LED indikator dan layar LCD 16x2
berbasis komunikasi I2C. Layar LCD dipilih agar hasil penghitungan waktu dapat
ditampilkan secara langsung dan mudah dibaca, berbeda dengan tampilan angka
tunggal pada 7-segmen.
Dalam
proses perancangan dan pengujian sistem, digunakan platform Wokwi yang
memungkinkan simulasi rangkaian elektronik dan program secara virtual tanpa
memerlukan perangkat keras secara langsung.
1.2 Rumusan
Masalah
- Bagaimana merancang sistem
stopwatch sederhana menggunakan Arduino Uno?
- Bagaimana tombol digital
dapat digunakan untuk mengendalikan proses mulai,jeda, dan reset pada
stopwatch?
- Bagaimana teknik pembacaan
waktu berjalan (non-blocking) menggunakan fungsi millis() dibandingkan
dengan delay()
- Bagaimana menampilkam hasil
penghitungan waktu pada layar LCD 16x2 melalui komunikasi 12C?
- Bagaimana melakukan simulasi
dan pengujian sistem menggunakan platform Wokwi?
1.3 Tujuan
Laporan
- Mengetahui proses perancangan
sistem stopwatch berbasis Arduino Uno.
- Memahami cara kerja pembacaan
input digital dari tombol dengan resistor pull-down.
- Mengetahui prinsip kerja
fungsi millis() dalam menghasilkan pewaktuan tanpa menghentikan program.
- Memahami penggunaan LCD 16x2
12C sebagai perangkat output tampilan.
- Melakukan simulasi dan
pengujian rangkaian menggunakan Wokwi.
BAB II
Tinjauan Pustaka
2.1 Dasar
Teori
2.1.1 Mikrokontroler
Mikrokontroler
merupakan perangkat elektronik yang berfungsi sebagai pengendali suatu sistem
berdasarkan program yang telah dibuat. Mikrokontroler dapat menerima data dari
perangkat input, melakukan proses pengolahan data, kemudian menghasilkan
keluaran melalui perangkat output. Dalam sebuah mikrokontroler terdapat
beberapa bagian pendukung seperti prosesor, memori, GPIO, ADC, PWM, timer, dan
komunikasi yang memungkinkan mikrokontroler digunakan untuk berbagai aplikasi
elektronik.
2.1.2 Arduino
Uno
Arduino
Uno merupakan papan mikrokontroler berbasis chip Atmega328 yang banyak
digunakan dalam pembelajaran sistem elektronik dan embedded system karena
kemudahan penggunaan serta dukungan pin digital dan analog yang lengkap. Pada
proyek ini, Arduino Uno digunakan sebagai pusat kendali yang bertugas membaca
status tombol, menghitung waktu berjalan, serta mengendalikan LED dan layar
LCD.
2.1.3 Push
Button dan Resistor Pull-Down
Push
button merupakan komponen input digital yang menghasilkan kondisi logika HIGH
atau LOW tergantung kondisi ditekan atau tidak. Agar pembacaan logika stabil
saat tombol tidak ditekan, digunakan resistor pull-down yang menghubungkan pin
input ke ground (GND), sehingga pin bernilai LOW secara default dan berubah
menjadi HIGH hanya ketika tombol ditekan.
2.1.4 LED
LED (Light
Emitting Diode) merupakan komponen elektronik yang dapat menghasilkan cahaya
ketika dialiri arus listrik. Pada proyek ini, LED digunakan sebagai indikator
status sistem, yaitu menyala ketika stopwatch sedang berjalan dan mati ketika
stopwatch dalam kondisi berhenti atau direset.
2.1.5 LCD
16x2 dan Komunikasi 12C
LCD
(Liquid Crystal Display) 16x2 merupakan perangkat output yang mampu menampilkan
teks sebanyak 16 karakter pada 2 baris. Modul I2C yang dipasangkan pada LCD
memungkinkan komunikasi data hanya menggunakan dua jalur, yaitu SDA (data) dan
SCL (clock), sehingga jumlah kabel yang dibutuhkan jauh lebih sedikit
dibandingkan LCD tanpa modul I2C.
2.1.6 Fungsi
millis() sebagai Non-Blocking Timer
Fungsi
millis() pada Arduino mengembalikan jumlah milidetik sejak program mulai
berjalan. Berbeda dengan fungsi delay() yang menghentikan seluruh proses
program selama waktu tertentu, penggunaan millis() memungkinkan mikrokontroler
tetap dapat membaca input lain (seperti tombol) sementara proses penghitungan
waktu tetap berjalan di latar belakang.
2.1.7 Wokwi
Wokwi
merupakan simulator elektronik berbasis web yang digunakan untuk melakukan
perancangan dan pengujian rangkaian mikrokontroler secara virtual. Dengan
Wokwi, pengguna dapat menguji program dan rangkaian sebelum diterapkan
menggunakan perangkat keras secara langsung.
2.2 Komponen
|
No |
Komponen |
Jumlah |
Fungsi |
|
1 |
Arduino
Uno |
1 |
Sebagai
Mikrokontroler pengendali sistem |
|
2 |
LCD 16x2
(12C) |
1 |
Menampilkan
waktu stopwatch |
|
3 |
Push
Button |
2 |
Input
Start/Stop dan reset |
|
4 |
LED |
1 |
Indikator
sistem sedang berjalan |
|
5 |
Resistor
10K Ω |
1 |
Indikator
kondisi bahaya |
|
6 |
Resistor
220 Ω |
3 |
Membatasi
arus LED |
|
8 |
Wokwi |
1 |
Simulator
sistem |
BAB III
PEMBAHASAN
3.1 Penjelasan
Simulasi
Pada
simulasi ini dirancang sebuah sistem stopwatch digital berbasis Arduino Uno
menggunakan dua buah tombol, LED indikator, dan layar LCD 16x2 I2C. Rangkaian
dibuat menggunakan platform Wokwi untuk melakukan pengujian sistem secara
virtual sebelum diterapkan pada perangkat keras secara langsung.
Gambar
3.1 Rangkaian
Simulasi Sistem Bantuan Parkir Menggunakan ESP32
Berdasarkan
rangkaian yang dibuat, Arduino Uno berfungsi sebagai pusat pengendali sistem
yang membaca status dua buah tombol, yaitu tombol Start/Stop dan tombol Reset,
kemudian melakukan proses pengolahan waktu berdasarkan program yang telah
dibuat.
Tombol
Start/Stop digunakan untuk memulai, menjeda, dan melanjutkan proses
penghitungan waktu. Setiap kali tombol ini ditekan, sistem akan berpindah
kondisi antara berjalan dan berhenti sementara (toggle). Tombol Reset digunakan
untuk mengembalikan nilai waktu ke posisi awal 00:00.00.
Pada sisi
output, sistem menggunakan LED sebagai indikator status berjalan dan LCD 16x2
I2C untuk menampilkan waktu secara langsung dalam format
menit:detik.centidetik.
Prinsip
kerja sistem secara keseluruhan adalah:
Tombol
(Start/Stop, Reset) → Arduino Uno → LED & LCD
Ketika
tombol Start/Stop ditekan, Arduino akan mencatat waktu awal menggunakan fungsi
millis() dan menandai status sistem sebagai “berjalan”. Selama status berjalan,
program akan terus menghitung selisih waktu saat ini dengan waktu awal tanpa
menghentikan pembacaan tombol lain, sehingga sistem tetap responsif. Ketika
tombol ditekan kembali, sistem akan menyimpan total waktu yang telah berjalan
dan berhenti sementara. Ketika tombol Reset ditekan, seluruh nilai waktu
dikembalikan ke nol.
3.2 Konfigurasi
Rangkaian
|
Komponen |
Pin
ESP32 |
|
Tombol
Start/Stop |
Digital
Pin 2 |
|
Tombol
Reset |
Digital
pin 3 |
|
LED
Indikator |
Digital
Pin 13 |
|
LCD
SDA |
A4 |
|
LCD
SCL |
A5 |
3.3 Program
|
// Stopwatch
dengan LCD 16x2 I2C // Tombol
Start/Stop di pin 2, Reset di pin 3, LED indikator di pin 13 // LCD I2C: SDA
-> A4, SCL -> A5 #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C
lcd(0x27, 16, 2); // alamat I2C biasanya 0x27, kalau tidak muncul coba 0x3F const int
pinStartStop = 2; const int pinReset
= 3; const int pinLED =
13; bool berjalan = false; unsigned long
waktuMulai = 0; unsigned long
totalWaktu = 0; unsigned long tampilTerakhir
= 0; int
statusTombolSebelumnya = LOW; void setup() { pinMode(pinStartStop,
INPUT); pinMode(pinReset,
INPUT); pinMode(pinLED,
OUTPUT); lcd.init(); lcd.backlight(); lcd.setCursor(0,
0); lcd.print("STOPWATCH"); lcd.setCursor(0,
1); lcd.print("00:00.00"); } void loop() { int
statusTombolStart = digitalRead(pinStartStop); int
statusTombolReset = digitalRead(pinReset); // Deteksi
tombol Start/Stop baru ditekan if (statusTombolStart
== HIGH && statusTombolSebelumnya == LOW) { if (!berjalan)
{
waktuMulai = millis() - totalWaktu;
berjalan = true; } else
{
totalWaktu = millis() - waktuMulai;
berjalan = false; } delay(50); }
statusTombolSebelumnya = statusTombolStart; // Tombol
Reset if (statusTombolReset
== HIGH) {
berjalan = false;
totalWaktu = 0;
waktuMulai = 0; delay(200); } // Hitung
waktu berjalan unsigned long
waktuSekarang = berjalan ? (millis() - waktuMulai) : totalWaktu; digitalWrite(pinLED,
berjalan ? HIGH : LOW); // Update
LCD tiap 30ms (biar tidak flicker/kedip berlebihan) if (millis()
- tampilTerakhir >= 30) {
tampilTerakhir = millis(); unsigned
long totalDetik = waktuSekarang / 1000; int
menit = totalDetik / 60; int
detik = totalDetik % 60; int
centidetik = (waktuSekarang % 1000) / 10; // 2 digit (centisecond) lcd.setCursor(0,
1); if (menit
< 10) lcd.print("0"); lcd.print(menit); lcd.print(":"); if (detik
< 10) lcd.print("0"); lcd.print(detik); lcd.print("."); if (centidetik
< 10) lcd.print("0"); lcd.print(centidetik); lcd.print("
"); // spasi ekstra buat hapus sisa karakter lama } } |
3.4 Hasil
Pengujian
|
No |
Kondisi |
LED
Indikator |
Tampilan
LCD |
Keterangan |
|
1 |
Sebelum
tombol ditekan |
Mati |
00:00.00 |
Sistem
dalam kondisi awal/reset |
|
2 |
Tombol
Start ditekan |
Menyala |
Waktu
berjalan (mis. 00:05.24 |
Stopwatch
mulai menghitung |
|
3 |
Tombol
start ditekan lagi (pause) |
Mati |
Waktu
berhenti (mis. 00:12.60) |
Stopwatch
berhenti sementara |
|
4 |
Tombol
start ditekan(lanjut) |
menyala |
Melanjutkan
dari waktu sebelumnya |
Stopwatch
melanjutkan hitungan |
|
5 |
Tombol
Reset ditekan |
mati |
00:00.0 |
Waktu
Kembali ke nol |
Berdasarkan
hasil pengujian pada tabel di atas, sistem stopwatch dapat berfungsi sesuai
dengan rancangan, yaitu mampu memulai, menjeda, melanjutkan, dan mereset
perhitungan waktu dengan tepat. LED indikator juga berhasil menyala dan mati
sesuai dengan status berjalan atau berhentinya sistem.
BAB IV
PENUTUP
4.1 Kesimpulan
Berdasarkan
simulasi yang telah dilakukan, sistem stopwatch digital berbasis Arduino Uno
berhasil dirancang menggunakan dua buah tombol sebagai input, serta LED dan LCD
16x2 I2C sebagai output.
Arduino
Uno mampu membaca status tombol secara responsif menggunakan teknik
non-blocking dengan fungsi millis(), melakukan proses penghitungan waktu, dan
menampilkan hasilnya secara langsung pada layar LCD. Simulasi menggunakan Wokwi
membantu memahami proses perancangan sistem mikrokontroler sebelum diterapkan
pada perangkat nyata.
4.2 Saran
- Sistem dapat dikembangkan
dengan menambahkan fitur lap time (pencatatan waktu antar putaran)
menggunakan tombol tambahan.
- Sistem dapat dikembangkan
menggunakan ESP32 dengan konektivitas Wi-Fi agar hasil pencatatan waktu
dapat dipantau melalui aplikasi.
- Buzzer dapat ditambahkan
sebagai umpan balik suara ketika tombol Start/Stop atau Reset ditekan.
- Pengujian selanjutnya dapat
dilakukan menggunakan perangkat keras secara langsung untuk memastikan
kestabilan pembacaan tombol pada kondisi nyata.
4.3 Link
Simulasi WOKWI
https://wokwi.com/projects/474582373847305217
Daftar Pustaka
Elias, G.
F., Makahinda, T., & Lolowang, J. (2022). Rancang Bangun Alat Timer
Otomatis Pesawat Atwood Berbasis Arduino. Charm Sains: Jurnal Pendidikan
Fisika. https://eurekaunima.com/index.php/jpfunima/article/view/146
Aufar, M.
R. (2021). Pemrograman Arduino pada Rancang Bangun Timer Countdown Waktu Ujian
Berbasis IoT (Tugas Akhir). Politeknik Negeri Jakarta.
https://repository.pnj.ac.id/id/eprint/853/
Tidak ada komentar:
Posting Komentar