Jam Digital Menggunakan Clock Internal Arduino
Pada umumnya, program jam digital pada arduino menggunakan clock eksternal sebagai penghitung waktu.
Namun, kita juga bisa membuat jam digital menggunakan internal clock arduino dengan memanfaatkan timer dan interrupt.
Apa itu Interrupt?
Program pada Arduino secara normal berjalan sesuai urutan dan bergantian menunggu program yang sedang berjalan selesai.
Interrupt adalah kondisi dari luar program yang "menginterupsi" program yang sedang berjalan menggunakan ISR(Interrupt Service Routine).
Program yang sedang berjalan akan "mengalah" dan ISR dapat menjalankan programnya.
Setelah ISR selesai, maka program yang sebelumnya sedang berjalan akan melanjutkan ke instruksi selanjutnya.
Apa itu timer?
Timer/counter adalah sebuah hardware builtin dari Arduino. Timer bekerja seperti clock, sehingga dapat digunakan untuk menghitung waktu
Timer dapat diprogram menggunakan register spesial TCCRx (Timer/Counter Control register). Pada Experiment ini digunakan TCCR1
Untuk mempermudah perhitungan waktu kita akan membutuhkan prescaler
Apa itu prescaler?
Prescaler adalah rangkaian penghitung elektronik yang digunakan untuk menurunkan frekuensi tinggi dengan membaginya dengan nilai-nilai tertentu
Prescaler pada arduino dapat diatur dengan mengubah CS12, CS11, CS10 pada register TCCRx.
berikut ini nilai-nilai kombinasi dari CS12, CS11, CS10
Kita juga dapat memilih mode timer yang digunakan dengan mengubah WGM13, WGM12, WGM11, WGM10 pada register TCCRx
Pada Experiment ini, kita akan menggunakan CTC untuk mendapatkan jam yang presisi.
maka kita membutuhkan nilai OCR untuk membandingkan waktu interrupt timer.
nilai OCR dapat dicari dengan rumus OCR=frekuensi clock(timer/prescaler)-1
Pada experiment ini kita akan menggunakan timer = 1 detik sehingga
untuk mendapatkan timer 1 detik, kita membutuhkan prescaler sebesar 256,
sementara nilai frekuensi clock arduino = 16MHz
OCR = 16MHz(1/256)-1 = 62499 atau dalam hexadesimal 0xF423
Apa itu seven segment 4 digit?
Seven segment dinyalakan bergantian pada frekuensi yang tinggi secara sekuensial dari kiri ke kanan dengan menyala bergantian seven segment dapat dilihat seperti terus menyala yang pada keadaan sebenarnya seven segment menyala per digit saja. Pada mata manusia sudah sulit untuk membedakan transisi ketika 60Hz.
Apa itu button?
Ketika button ditekan maka rangkaian akan menjadi terhubung dengan ground. Agar arus tidak besar sehingga dibutuhkan mode pullup ini. Ketika button ditekan maka input pada arduino akan low sedangkan ketika button dilepas maka input pada arduino akan high.
EXPERIMENT
Komponen
1.Arduino Uno
2.7 segment 4 digits
3.Jumper 21 buah
4.Resistor 1k 9 buah
5.Button 6 buah
5.Button 6 buah
Fitur
2.Mode Countdown Timer
3.Mode Kalkulator
pinternya bagi2 dong
BalasHapus