TUJUAN :
1. Mampu membuat program yang mengunakan fitur timer sebagai pewaktu.
2. Mampu membuat program yang menggunakan fitur timer sebagai penghitung.
3. Mampu mempergunakan fitur timer pada mikrokontroler untuk membuat jam digital
sederhana.
PERALATAN :
1. Komputer
2. Arduino Uno
3. Kabel USB tipe B
4. Project board
5. Kabel jumper
6. LED
7. Resistor 330 Ohm
8. Switch pushbutton
9. LCD
10. Potensiometer: 1 set
PERCOBAAN :
6.1 Penggunaan Timer Overflow Untuk LED Blinking
Pada percobaan kali ini akan dibuat program untuk membuat led berkedip per 500
milliseconds. Pada dasarnya LED akan toggle (berubah kondisinya) setiap terjadi
interupsi timer overflow. Nilai register timer di-set sedemikian rupa sehingga
menghasilkan waktu overflow per 500 milliseconds.
1. Buatlah rangkaian seperti pada Gambar 6.1.
2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload
program ke sistem minimum Arduino.
boolean dataLed = 0;
unsigned int overflowCount = 0;
voidsetup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286;
TCCR1B |= (1 << CS12);
TIMSK1 |= (1 << TOIE1);
sei();
}
ISR(TIMER1_OVF_vect) {
TCNT1 = 34286;
if(dataLed == 0) {
dataLed = 1;
}
else{
dataLed = 0;
}
digitalWrite(13, dataLed);
overflowCount++;
}
voidloop() {
Serial.print("Overf count = ");
Serial.println(overflowCount,DEC);
delay(100);
}
3. Buka Serial Monitor pada Arduino IDE, pastikan baudrate pada Serial Monitor
adalah 9600. Kemudian amati teks yang ditampilkan pada Serial Monitor. Amati
juga kondisi nyala dan mati LED pada pin 12.













Pada percobaan kali ini akan dibuat program sederhana yang berfungsi sebagai jam
digital dengan memanfaatkan fitur timer mikrokontroler. Timer akan dikonfigurasi
sehingga terjadi overflow setiap 1 detik. Tiap timer terjadi overflow, variabel detik,
menit dan jam akan di--update nilainya. Nilai variabel tersebut akan ditampilkan pada lcd.
Prosedur :
1. Buatlah rangkaian seperti Gambar 6.2.
2. Tuliskan sintaks program berikut ini, lakukan kompilasi dan upload program


































































LiquidCrystal lcd(2,3,4,5,6,7);
unsigned int jam, menit, detik;
boolean led = 0;
ISR(TIMER1_OVF_vect) {
TCNT1H=0xC2;
TCNT1L=0xF7;
detik++;
if(detik>=60) {
detik = 0;
menit++;
if(menit>=60) {
menit = 0;
jam++;
if(jam>=24) {
jam = 0;
}
}
}
}
void initTimer1() {
TCCR1A=0x00;
TCCR1B=0x05;
TCNT1H=0xC2;
TCNT1L=0xF7;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
TIMSK1=0x01;
sei();
}
void setup() {
lcd.begin(16,2);
lcd.clear();
initTimer1();
}
void loop() {
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Jam Digital");
lcd.setCursor(0,1);
lcd.print(jam,DEC);
lcd.print(":");
lcd.print(menit,DEC);
lcd.print(":");
lcd.print(detik,DEC);
delay(500);
}
6.3
Counter Mode Falling Edge
Pada percobaan kali ini akan dibuat
program yang berfungsi untuk menghitung jumlah penekanan switch pada input
counter. Konfigurasi counter menggunakan mode falling edge.
Prosedur :
1. Buatlahrangkaian s epertipadaGambar 6.3.
2. Tuliskansintaks program berikutini, kemudian lakukan
kompilasi dan upload
Program ke sistem
minimum Arduino.
voidsetup() // untuk settingan awal
program
{
Serial.begin(9600);
// kecepatan mengirim/transfer data
TCCR1A=0x00;
// nilai
timer 1 register 1 A
TCCR1B=0x06;
// nilai
timer1 register 1 B
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}
voidloop() { //
eksekusi pengulangan
Serial.print("Nilai
TCNT1 = "); //
untuk menampilkan Nilai TCNT1=
Serial.println(TCNT1,DEC); // TCNT1 menghitung secara desimal
delay(100); //
penunda waktu
}
3.
Buka Serial Monit
or padaArduino IDE, kemudiantekanswitch pushbutton dan amati nilai TCNT1
yang ditampilkan pada Serial Monitor.
The 22 best casinos in Las Vegas - MapyRO
BalasHapusThe 22 best casinos in Las Vegas 하남 출장샵 - MapyRO! ✓ Casino Directory 영주 출장샵 ✓ 여주 출장안마 Check if 경기도 출장안마 all casinos are open and 제주 출장샵 working with Mapyro.