LAPORAN PRAKTIKUM 4
INTERUPSI EKSTERNAL
Nama :
Muhammad Rizki
Nim :
3211301031
TUJUAN :
1. Mampu membuat program untuk penggunaan fitur interupsi eksternal.
2. Memahami perbedaan mode interupsi eksternal (falling, rising, dan any change).
PERALATAN :
1. Komputer : 1 set
2. Arduino Uno : 1 pcs
3. Project board : 1 pcs
4. Kabel jumper : 1 pcs
5. Switch pushbutton : 2 pcs
6. LCD : 1 pcs
7. Potensiometer 10K : 1 pcs
PERCOBAAN :
4.1 Interupsi Eksternal dengan Mode Falling
Pada percobaan kali ini akan dibuat program untuk memahami penggunaan
interupsi eksternal dengan mode falling. Dua buah switch akan dihubungkan pada pin
interupsi eksternal 0 (INT0) dan interupsi eksternal 1 (INT1). Penekanan switch akan
menginterupsi program utama (yang berada pada fungsi loop) dan memaksa untuk
menjalankan rutin interupsi yang telah dideskripsikan pada program.
Prosedur :
1. Rangkailah rangkaian pada Gambar 4.1.
Gambar 4.1 Rangkaian percobaan 4.1
2. Tuliskan sintaks program berikut ini, kemudian lakukan kompilasi dan upload
program ke sistem minimum Arduino.
#include <LiquidCrystal.h> LiquidCrystal
lcd(A0,A1,A2,A3,A4,A5); unsigned int countLoop
= 0;
void setup() { lcd.begin(16,2);
lcd.clear();
attachInterrupt(0, rutinInterupsi0, FALLING); attachInterrupt(1, rutinInterupsi1,
FALLING);
}
void loop() { lcd.setCursor(0,0);
lcd.setCursor(0,1);
countLoop++;
delay(1000);
}
lcd.print("Main
Program");
lcd.print("Count Loop
"); lcd.print(countLoop);
void rutinInterupsi0() {
lcd.setCursor(0,0); lcd.print("Int0
Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT0"); delay(2000);
}
void rutinInterupsi1() {
lcd.setCursor(0,0); lcd.print("Int1
Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT1"); delay(2000);
}
Tugas dan Pertanyaan :
1. Biarkan program berjalan sehingga pada LCD nilai count loop increment sampai
diatas 5. Kemudian tekan salah satu switch yang terhubung pada INT0 atau INT1
selama 5 detik kemudian lepaskan. Amati teks yang ditampilkan pada LCD.
Apakah yang akan terjadi jika switch ditekan ? Apakah yang akan terjadi jika
switch dilepas ?
2. Jelaskan pada
saat kapan terjadinya
proses interupsi ?
Jawab :
1. Awal
mulanya program utama akan menghitung naik sesuai dengan program yang kita
buat lcd.setCursor(0,0) MAIN PROGRAM ,
lcd.setCursor(0,1) HITUNG. Pada
saat swich di tekan maka akan mengalami interupsi sesuai dengan
yang terhubung dengan swich. Misalnya kita biarkan program count loop
increment sampai diatas 5 kemudian tekan swich 0 yang terhubung dengan INT 0 maka LCD akan
menampilkan program rutinInterupsi0 yang isinya lcd.setCursor(0,0) adalah Int0
Program dan lcd.setCursor(0,1) Interrupt INT0 selama 1000mS kemudian akan
kembali ke program utama dan jika swichnya dilepas tidak akan berpengaruh apa-
apa,tetap pada program utama untuk melanjutkan proses count.
2. Interupsi mode falling terjadi
pada saat keadaan high ke low. Ketika kita menekan swich program akan mengalami
proses intrupsi selama 1000mS dan akan kembali ke program utama, ketika kita
melepaskan swichnya program tetap.
4.2 Interupsi Eksternal dengan Mode Rising
Dua buah switch akan dihubungkan pada pin INT0 dan INT1 sama seperti
Percobaan 4.1. Penekanan switch akan menginterupsi program utama (yang berada
pada fungsi loop) dan memaksa untuk menjalankan rutin interupsi yang telah
dideskripsikan pada program. Pada Percobaan mode interupsi yang digunakan adalah
rising.
Prosedur :
1. Gantilah program pada Percobaan 4.2 dengan sintaks program berikut ini,
kemudian lakukan kompilasi dan upload program ke sistem minimum Arduino.
#include <LiquidCrystal.h> LiquidCrystal lcd(A0,A1,A2,A3,A4,A5);
unsigned int countLoop = 0;
void setup() {
lcd.begin(16,2); lcd.clear(); attachInterrupt(0, rutinInterupsi0,
RISING); attachInterrupt(1, rutinInterupsi1,
RISING);
}
void loop() {
lcd.setCursor(0,0); lcd.print("Main Program");
lcd.setCursor(0,1); lcd.print("Count Loop "); lcd.print(countLoop); countLoop++; delay(1000);
}
void rutinInterupsi0() {
lcd.setCursor(0,0); lcd.print("Int0 Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT0"); delay(2000);
}
void rutinInterupsi1() {
lcd.setCursor(0,0); lcd.print("Int1 Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT1"); delay(2000);
}
Tugas dan Pertanyaan :
1. Biarkan program berjalan sehingga pada LCD nilai count loop increment sampai
diatas 5. Kemudian tekan salah satu switch yang terhubung pada INT0 atau INT1
selama 5 detik kemudian lepaskan. Amati teks yang ditampilkan pada LCD.
Apakah yang akan terjadi jika switch ditekan ? Apakah yang akan terjadi jika
switch dilepas ?
2. Jelaskan pada
saat kapan terjadinya
proses interupsi ?
3. Kapankah interupsi mode falling terjadi ? kapankah interupsi mode rising terjadi ?
Jelaskan !
JAWAB:
1. Awal
mulanya program utama akan menghitung naik sesuai dengan program yang kita
buat lcd.setCursor(0,0) MAIN PROGRAM ,
lcd.setCursor(0,1) HITUNG. Pada
saat swich di tekan program belum mengalami proses interupsi,kemudian
ketika di lepas maka
akan mengalami interupsi sesuai dengan yang terhubung
dengan swich. Misalnya kita biarkan program count loop increment sampai
diatas 5 kemudian tekan swich 1 yang
terhubung dengan INT 1 maka tampilan LCD
masih di program utama,ketika kita melepaskan swich maka akan
menampilkan program rutinInterupsi1 yang isinya lcd.setCursor(0,0) adalah Int1
Program dan lcd.setCursor(0,1) Interrupt INT1 selama 1000mS kemudian akan
kembali ke program utama untuk melanjutkan proses count.
2. Interupsi
mode falling terjadi pada saat keadaan high ke low. Ketika Ketika kita
menekan swich program akan mengalami proses intrupsi selama 1000mS dan akan
kembali ke program utama, ketika kita melepaskan swichnya program tetap.
Interupsi mode rising terjadi pada saat keadaan low ke high. Ketika kita
menekan swich program utama masih jalan untuk proses count pada saat kita
melepaskan swich,program akan mengalami proses intrupsi selama 1000mS dan akan
kembali ke program utama utuk melanjutkan proses count.
4.3 Interupsi Eksternal dengan Mode Any Change
Pada Percobaan mode interupsi yang digunakan adalah any change. Dua buah
switch akan dihubungkan pada pin INT0 dan INT1. Penekanan switch akan membuat
program utama pada fungsi loop terhenti dan mengeksekusi rutin interupsi.
Prosedur :
1. Gantilah sintaks program pada Percobaan 4.2 dengan sintaks program berikut ini.
Lakukan kompilasi dan upload program ke sistem minimum Arduino.
#include <LiquidCrystal.h> LiquidCrystal lcd(A0,A1,A2,A3,A4,A5); unsigned int countLoop
= 0;
void setup() { lcd.begin(16,2);
lcd.clear();
attachInterrupt(0, rutinInterupsi0, CHANGE); attachInterrupt(1, rutinInterupsi1,
CHANGE);
}
void loop() {
lcd.setCursor(0,0); lcd.print("Main
Program");
lcd.setCursor(0,1); lcd.print("Count
Loop "); lcd.print(countLoop); countLoop++;
delay(1000);
}
void rutinInterupsi0() {
lcd.setCursor(0,0); lcd.print("Int0
Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT0"); delay(2000);
}
void rutinInterupsi1() {
lcd.setCursor(0,0); lcd.print("Int1
Program"); lcd.setCursor(0,1); lcd.print("Interrupt INT1"); delay(2000);
}
Tugas dan Pertanyaan :
1. Biarkan program berjalan sehingga pada LCD nilai count loop increment sampai
diatas 5. Kemudian tekan salah satu switch yang terhubung pada INT0 atau INT1
selama 5 detik kemudian lepaskan. Amati teks yang ditampilkan pada LCD.
Apakah yang akan terjadi jika switch ditekan ? Apakah yang akan terjadi jika
switch dilepas ?
2. Jelaskan pada
saat kapan terjadinya
proses interupsi ?
3. Kapankah interupsi mode any change terjadi ? Jelaskan !
Jawab
1. Awal mulanya program utama akan
menghitung naik sesuai dengan program yang kita buat lcd.setCursor(0,0) MAIN PROGRAM ,
lcd.setCursor(0,1) HITUNG. Pada saat swich di tekan maka akan mengalami
interupsi sesuai dengan yang terhubung dengan swich selama 1000mS lalu akan
kembali ke program utama,pada saat kita melepaskan swich maka akan mengalami
interupsi sesuai dengan yang terhubung dengan swich. Misalnya kita biarkan
program count loop increment sampai diatas 5 kemudian tekan swich 0
yang terhubung dengan INT 0 maka LCD
akan menampilkan program rutinInterupsi0 yang isinya lcd.setCursor(0,0) adalah
Int0 Program dan lcd.setCursor(0,1) Interrupt INT0 selama 1000mS kemudian akan
kembali ke program utama dan jika swichnya dilepas maka akan menampilkan
program rutinInterupsi1 yang isinya lcd.setCursor(0,0) adalah Int1 Program dan
lcd.setCursor(0,1) Interrupt INT1 selama 1000mS kemudian akan kembali ke
program utama untuk melanjutkan proses count.
2. Ketika keadaan dari 1(HIGH) ke 0 (LOW)
dan pada keadaan 0 (LOW) ke 1 HIGH). Misalnya pada saat kita menekan swich maka
program akan mengalami proses intrupsi selama 1000mS kemudian akan kembali ke
program utama dan pada saat kita melepas swich program juga akan mengalami
proses intrupsi selama jangka waktu 1000mS kemudian akan kembali menjaankan
program utama. Jadi interupsi terjadi
pada saat switch di tekan dan dilepas.
3. Ketika kita menekan swich dan pada saat
melepaskannya. Ketika kita menekan swich maka program akan mengalami intrupsi
dalam jangka waktu 1000mS lalu kembali ke program utama pada saat kita
melepaskan swich program akan mengalami intrupsi selama 1000mS setelah itu
kembali ke program utama. Jadi any change
adalah pergabungan
dari mode FALLING mode RISING.
Kesimpulan
Pada
praktikum interup ini ki dapat dapat mengetahui bah wa interup pada mode
falling interrupts akan terjadi pada saat switch di tekan, dan untuk mode
risingintrupts akan terjadi pada saat switch di lepas, sedangkan pada mode
change adalah gabungan antara mode falling dan mode rising jadi intrupts
terjadi pada saat switch di tekan dan di lepas.