Rabu, 08 Januari 2014

timer





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.


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

#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);
}





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. 

1 komentar:

  1. The 22 best casinos in Las Vegas - MapyRO
    The 22 best casinos in Las Vegas 하남 출장샵 - MapyRO! ✓ Casino Directory 영주 출장샵여주 출장안마 Check if 경기도 출장안마 all casinos are open and 제주 출장샵 working with Mapyro.

    BalasHapus