Pada Artikel sebelumnya saya sudah berbagi mengenai Cara Menampilkan Karakter pada LCD dengan Menggunakan I2C Module. Kali ini kita akan belajar Membuat StopWatch Sendiri menggunakan Arduino Uno dan LCD 16x2.
Kebutuhan Hardware :
1. Arduino Uno
2. Module I2C LCD 16x2
3. LCD 16x2
4. Tact Switch
Untuk Pembelian Komponen bisa BELI DISINI.
Berikut ini adalah Schematicnya :
Setelah terkoneksi dengan baik silahkan upload Sketch dibawah ini :
/***************************
StopWatch LCD 16x2
Oleh : Workshop Electronics 3 in 1
Website : www.arduinoindonesia.id
Toko Online : www.workshopelectronics3in1.com
Blog : www.edukasielektronika.com
Profil : www.workshopelectronics3in1.co.id
Copyright @2017
****************************/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F ,2,1,0,4,5,6,7,3, POSITIVE);
unsigned long mulai, selesai, dataStopWatch;
int i=0;
int fPaus = 0;
long lastButton = 0;
long delayAntiBouncing = 50;
long dataPaus = 0;
void setup(){
pinMode(A0,INPUT);
pinMode(A1,INPUT);
digitalWrite(A0,1);
digitalWrite(A1,1);
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("ArduinoIndonesia");
lcd.setCursor(0, 1);
lcd.print(" StopWatch");
delay(2000);
lcd.clear();
lcd.print(" Tekan Tombol");
lcd.setCursor(0, 1);
lcd.print(" Start / Stop");
}
void loop(){
if (digitalRead(A0)==0){
if ((millis() - lastButton) > delayAntiBouncing){
if (i==0){
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Start Timer");
mulai = millis();
fPaus = 0;
}
else if (i==1){
lcd.setCursor(0, 0);
lcd.print("Stop Timer ");
dataPaus = dataStopWatch;
fPaus = 1;
}
i =!i;
}
lastButton = millis();
}
else if (digitalRead(A1)==0 && fPaus == 1){
dataStopWatch = 0;
dataPaus = 0;
lcd.clear();
lcd.print("Reset Stopwatch");
lcd.setCursor(0, 1);
lcd.print("0:0:0.0");
delay(2000);
lcd.clear();
lcd.print(" Tekan Tombol");
lcd.setCursor(0, 1);
lcd.print(" Start / Stop");
}
if (i==1){
selesai = millis();
float jam, menit, detik, miliDetik;
unsigned long over;
// MATH time!!!
dataStopWatch = selesai - mulai;
dataStopWatch = dataPaus + dataStopWatch;
jam = int(dataStopWatch / 3600000);
over = dataStopWatch % 3600000;
menit = int(over / 60000);
over = over % 60000;
detik = int(over / 1000);
miliDetik = over % 1000;
lcd.setCursor(0, 1);
lcd.print(jam, 0);
lcd.print(":");
lcd.print(menit, 0);
lcd.print(":");
lcd.print(detik, 0);
lcd.print(".");
if (jam < 10){
lcd.print(miliDetik, 0);
lcd.print(" ");
}
}
}
Untuk lebih jelasnya silahkan lihat video berikut ini :
bang mau nanya donk. klo bkin split timernya gimna yah
BalasHapusKetika direset dan diulang
BalasHapusStopwatch tidak mulai dari nol lagi. Harusnya direset waktu ke nol
Supaya program di atas bisa berjalan, ganti aja variabel mulai dengan lastButton, pada hitungan natematik dataStopWath = mulai - selesai
BalasHapusTolong bagaimana menampilkan.dua stopwatch pada satu layar lcd
Komentar ini telah dihapus oleh pengarang.
BalasHapusBang, kalau include liquidcrystalnya yg bermasalah solusinya apa bang?
BalasHapusLibrary nya tidak cocok... atau malah library nya blm ada,,,
HapusLibrary nya tidak cocok... atau malah library nya blm ada,,,
Hapusiya bro , liquidnya erorr mulu , pencerahan dong
HapusLibrary nya tidak cocok... atau malah library nya blm ada,,,
HapusKak , waktu nyoba program ini kok detiknya sampek 59 trus ke 00 nya itu 9 nya nyantol , jadi nanti detiknya ngitung 19, 29 sampek 99 trus baru bener 10, 11 gitu
BalasHapuscaranya tombol start sama tombol finis biar beda gimana ya?
BalasHapusexit status 1
BalasHapus'POSITIVE' was not declared in this scope
mas, permasalahan di atas maksudnya gimana ya?
saya pake library https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library
Coba carikan library lain.
HapusTanya donk bro.. gimana caranya biar tombol start dan tombol stop berbeda yaa? Jadi ada 3 push button (start, stop, reset. Sketch dirubah spt apa yaa broo ?
BalasHapusSilahkan dikreasikan sendiri... Tinggal Rubah dikit....
Hapusint i=0;
BalasHapusint fPaus = 0;
long lastButton = 0;
long delayAntiBouncing = 50;
long dataPaus = 0;
maksud dari setiap inisialisasi di atas apa ya?
udah tau maksudnya belum? saya juga bingung maksud dari inisialisasinya
Hapus