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 : 1 set
2. Arduino
Uno : 1 pcs
3. Kabel
USB tipe B : 1 pcs
4. Project
Board : 1 pcs
5. Kabel
Jumper : 1 pcs
6. LED : 1 pcs
7. Resistor
330 Ohm : 1 pcs
8. Switch
pushbutton : 1 pcs
9. LCD : 1 pcs
10. Potensiometer :
1pcs
PERCOBAAN:
6.1 Penggunaan Times Overflow untuk
LED Blinking
Pada percobaan kali ini akan dibuat
program untuk membuat led berkedip per 500 mS. 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 mS.
Prosedur:
1. Buatlah
rangkaian seperti pada gambar 6.1.
2. Tuliskan
sintaks program berikut ini, kemjudian lakukan kompilasi dan upload program ke
sistem minimum Arduino.
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 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.
Untuk hasil nya dapat anda lihat di SINI
6.2 Jam Digital Menggunakan Timer
Pada percobaan kali ini akan dibuat
program sederhana yang berfungsi sebagai jam digital dengan memanfaatkan fitur
timer mikrokontroller. 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);
}
Hasil nya dapat anda lihat DISINI
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 program ke
sistem minimum Arduino.
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(500);
}
3.
Buka
serial monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati
nilai TCNT1 yang ditampilkan pada serial monitor.
Hasil nya dapat anda lihat DISINI
6.4 Counter Mode Rising Edge
Pada percobaan kali ini akan dibuat
program yang fungsinya sama dengan percobaan 6.3. Namun pada percobaan kali ini
konfigurasi counter menggunakan 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(500);
}
2.
Buka
serial monitor pada Arduino IDE, kemudian tekan switch pushbutton dan amati
nilai TCNT1 yang ditampilkan pada serial monitor.
Hasil nya dapat anda lihat DISINI
0 komentar:
Posting Komentar