TIMER DAN COUNTER
selamat malam agan2 mavv da lama gak pos karena blog yang kemaren udah di hapus sama google jadi agan sxan bisa lanjutin belajarnya di sini duniailmu132.blogspot.com. pada kesempatan kali ini sama akan membagikan tentang apa itu timer dan counter.
timer adalah sebuah fungsi yang sudah ada di arduino timer terbagi menjadi berbagai bit dan setian bit mempunyai fungsi yang berbeda-beda :
}Timer Counter 0 (8
bit) – Digunakan untuk fungsi delay(),
millis(), micros()
}Timer Counter 1 (16
bit) – Digunakan untuk library
servo
}Timer Counter 2 (8
bit) – Digunakan untuk fungsi tone()
sedangkan counter adalah sebuah fungsi yang dikembangkan dari timer.
berikut merupakan tutorial untuk mempraktekan timer dan counter hanya dengan simulasi
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
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.
unsigned int overflowCount = 0;
void setup() {
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++;
}
void loop() {
Serial.print("Overflow 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 pin12.
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 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
6.3 Counter Mode Falling Edge
Padapercobaan kali iniakandibuat program yang berfungsi
untuk menghitung jumlah penekanan switch pada input counter. Konfigurasicountermenggunakan
mode falling edge.
Prosedur :
1. Buatlahrangkaian s epertipadaGambar
6.3.
2. Tuliskansintaks program
berikutini,
kemudianlakukankompilasidanupload
programkesistem
minimum Arduino.
voidsetup()
{
Serial.begin(9600);
TCCR1A=0x00;
TCCR1B=0x06;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}
voidloop() {
Serial.print("Nilai TCNT1 = ");
Serial.println(TCNT1,DEC);
delay(100);
}
3. Buka
Serial Monit or padaArduino IDE, kemudiantekanswitch pushbuttondanamatinilai
TCNT1 yang ditampilkanpada Serial Monitor.
note: Nilai counter TCN1 akan
berubah pada saat pin 5 di beri logika 1-0 atau pada saat push button dari
kondisi tidak di tekan lalu di tekan maka akan aktif.
6.4
Counter Mode Rising Edge
Padapercobaanka li iniakandibuat program yang
fungsinyasamadenganPercobaan 6.3. Namunpadapercobaan kali inikonfigurasicountermenggunakan
mode rising edge.
Prosedur
:
1. GantilahsintaksprogrampadaPercobaan
6.5 dengansintaks p rogramberikutini, kemudianlakukankompilasidanupload
program kesistem minimum Arduino.
voidsetup()
{
Serial.begin(9600);
TCCR1A=0x00;
TCCR1B=0x07;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
}
voidloop() {
Serial.print("Nilai TCNT1 = ");
Serial.println(TCNT1,DEC);
delay(100);
}
2. Buka Serial Monitor padaArduino IDE, kemudiantekanswitch pushbuttondanamatinilai TCNT1 yang ditampilkanpada Serial Monitor.
note :
1.
Kapankahnilaicounterakanberubah
?Saatswitchditekanataudilepas ?Jelaskan !Pada saat kondisi switch dari keadaan ditekan
sampai dilepas , karena pada program kali ini yang di
pakai adalah mode rising edge yaitu akan aktif saat kondisi dari 0 ke 1
2.
Jelaskanperbedaanpenggunaancounter
mode falling edgedan mode rising edge !Mode falling
edge adalah perubahan terjadi saat data atau
nilainya berubah dari kondisi High ke LOW sedangkan jika Rissing edge
sebaliknya, yaitu dari LOW ke HIGH
TERIMAKASIH TELAH BERKUNJUNG DI BLOG SAYA
SEMOGA APA AYANG ADA DI BLOG INI BERMANFAAT
SEMOGA APA AYANG ADA DI BLOG INI BERMANFAAT
Tidak ada komentar:
Posting Komentar