Penggunaan Timer
Overflow
Pada percobaan kali ini akan
dibuat program untuk membuat led berkedip per 500
milliseconds.
Pada dasarnya LED akan toogle (berubah kondisi) setiap terjadi interupsi timer
overflow, nilai register timer di set sedemikian rupa sehu=ingga menghasilkan
waktu overflow per 500 milli seconds.
lansung saja kita coba ke praktiknya
PERALATAN YANG
KITA BUTUHKAN:
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. Buatlah rangkaian seperti pada Gambar 6.1.
Gambar 6.1 Rangkaian Percobaan 6.1
2. Tuliskaan sintaks program seperti berikutboolean dataLed = 0;
unsigned int overflowCount = 0;
void setup() {
Serial.begin(9600);
pinMode(12, OUTPUT);
TCCR1A = 0;
TCCR1B = 0;
TCNT1 = 34286;
TCCR1B |= (1 << CS12); // 256 prescaler
TIMSK1 |= (1 << TOIE1);
sei();
}
ISR(TIMER1_OVF_vect) { TCNT1 = 34286; if(dataLed == 0) {
dataLed = 1;
}
else {
dataLed = 0;
}
digitalWrite(13, dataLed); overflowCount++;
}
void loop() {
Serial.print(“Overflow count = “);
Serial.println(overflowCount,DEC);
delay(100);
}
3. Buka Serial Monit Arduino IDE, pastikan baudrate pada Serial Monitor adalah 9600. Lalu amati teks yang ditampilkan pada Serial Monitor dan amati juga kondisi nyala dan mati LED pada pin 12.
Keadaan LED mati
Keadaan LED hidup
Percobaan kali ini akan dibuat program berfungsi sebagai jam digital dengan memanfaatkan fitur timer mikrokontroler. Timer akan dikonfigurasi sehingga terjadi overflow setiap 1 detik. Tiap timer terjadi overfl ow, variabel detik, menit dan jam akan di -update nilainya. Nilai variabel tersebut akan ditampilkan pada LCD.
Prosedur :
1. Buatlah rangkaian seperti Gambar 6.2.
Gambar 6.2 Rangkaian Percobaan 6.2
2. Tuliskan sintaks program berikut ini, lakukan kompilasi dan upl oad
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=0×00;TCCR1B=0×05;
TCNT1H=0xC2; TCNT1L=0xF7;
ICR1H=0×00; ICR1L=0×00;
OCR1AH=0×00; OCR1AL=0×00;
OCR1BH=0×00; OCR1BL=0×00;
TIMSK1=0×01; 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);
}
Tampilan jam digital pada
LCD.
Tidak ada komentar:
Posting Komentar