Minggu, 27 September 2026

Simulasi stopwatch Digital Berbasis Arduino Uno dengan Tampilan LCD12C pada WOKWI

 

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

    1. Bagaimana merancang sistem stopwatch sederhana menggunakan Arduino Uno?
    2. Bagaimana tombol digital dapat digunakan untuk mengendalikan proses mulai,jeda, dan reset pada stopwatch?
    3. Bagaimana teknik pembacaan waktu berjalan (non-blocking) menggunakan fungsi millis() dibandingkan dengan delay()
    4. Bagaimana menampilkam hasil penghitungan waktu pada layar LCD 16x2 melalui komunikasi 12C?
    5. Bagaimana melakukan simulasi dan pengujian sistem menggunakan platform Wokwi?

1.3 Tujuan Laporan

    1. Mengetahui proses perancangan sistem stopwatch berbasis Arduino Uno.
    2. Memahami cara kerja pembacaan input digital dari tombol dengan resistor pull-down.
    3. Mengetahui prinsip kerja fungsi millis() dalam menghasilkan pewaktuan tanpa menghentikan program.
    4. Memahami penggunaan LCD 16x2 12C sebagai perangkat output tampilan.
    5. 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

    1. Sistem dapat dikembangkan dengan menambahkan fitur lap time (pencatatan waktu antar putaran) menggunakan tombol tambahan.
    2. Sistem dapat dikembangkan menggunakan ESP32 dengan konektivitas Wi-Fi agar hasil pencatatan waktu dapat dipantau melalui aplikasi.
    3. Buzzer dapat ditambahkan sebagai umpan balik suara ketika tombol Start/Stop atau Reset ditekan.
    4. 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