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
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.
Prosedur :
2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
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.
Tugas dan Pertanyaan :
2. Jelaskan perbedaan penggunaan delay dan timer overflow !
Fungsi Delay adalah menghentikan program untuk sesaat sesuai
dengan yang dikehendaki satuannya milisecond (ms). Sedangkan Timer Overflow
adalah seperangkat pencacah biner yang terhubung langsung ke saluran
mikrokontroler. Jika signal detak yang diberikan sudah melebihi kapasitas
timer, maka timer akan memberikan signal Oveflow atau limpahan. Terjadinya
overflow ini akan dicatat dalam suatu register tertentu.
6.2 Jam Digital Menggunakan Timer
Pada percobaan kali ini akan dibuat program sederhana yang berfungsi sebagai jam
digital
dengan memanfaatkan fitur timer mikrokontroler. Timer akan konfigurasisehingga 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:
2. Tuliskan sintaks program berikut ini, lakukan kompilasi dan upload program.
#include<LiquidCrystal.h> 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);
}
Tugas dan Pertanyaan :
1.
Ubahlah sintaks program pada Percobaan 6.2 sehingga jam menampilkan waktu
saat ini !
2. Jika
dilakukan
perhitungan
dengan konfigurasi
register
pada sintaks
program
Percobaan 6.2, timer 1
akan overflow setiap berapa milliseconds
?
akan overfllow setiap 60000 ms.
3. Jelaskan fungsi tiap baris
dari sintaks program pada Percobaan 6.2 !
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. Buatlah rangkaian seperti pada Gambar 6.3.
2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload
void setup() { Serial.begin(9600); TCCR1A=0x00; TCCR1B=0x06; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
}
void loop() {
Serial.print("Nilai TCNT1 = ");
Serial.println(TCNT1,DEC);
delay(100);
}
Tugas dan Pertanyaan :
Nilai
counter akan berubah ketika switch dilepas, dikarenakan perubahan nilai dari 1
ke 0 atau dari HIGH ke LOW.
Proses
interupsi terjadi ketika switch ditekan maupun saat dilepas.. Maka terjadi perubahan baik dari kondisi
falling atau pun dari kondisi rising.
6.4 Counter Mode Rising Edge
Prosedur :
1. Gantilah sintaks program pada Percobaan 6.5 dengan sintaks program berikut ini, kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
void setup() { Serial.begin(9600); TCCR1A=0x00; TCCR1B=0x07; TCNT1H=0x00; TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;
}
void loop() {
Serial.print("Nilai TCNT1 = ");
Serial.println(TCNT1,DEC);
delay(100);
}
Tugas dan Pertanyaan :
Nilai
counter akan berubah pada saat switch di lepas.
Mode falling edge adalah perubahan terjadi ketika switch berubah pada saat kondisi 1 ke 0. Rising adalah perubahan yang terjadi pada saat posisi switch
dalam saat kondisi 0 ke 1.
Tidak ada komentar:
Posting Komentar