Rabu, 18 Desember 2013

TIMER DAN COUNTER



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 berikut
boolean 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
6.2 Jam Digital Menggunakan Timer
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);
}
3.  Amati keadaan LCD .
Tampilan jam digital pada LCD.

Tidak ada komentar:

Posting Komentar