PRAKTIKUM 4
INTERUPSI EKSTERNAL
A. TUJUAN :
1.
Mampu membuat program untuk penggunaan fitur interupsi eksternal.
2.
Memahami perbedaan mode interupsi
eksternal (falling, rising,
dan any change).
B. 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
|
C. 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();
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(3,INPUT);
digitalWrite(3,HIGH);
attachInterrupt(0,
rutinInterupsi0, FALLING);
attachInterrupt(1,
rutinInterupsi1, FALLING);
}
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 ?
è Jika Switch di tekan akan tampil tampilan
seperti berikut ini.
Tapi jika di lepas, Program counter pada
main program akan melanjutkan prosesnya kembali.
è Pada saat
praktikum “Interupsi Eksternal” ketika terjadi perubahan logika dari switch
button, fungsi dari interupsi akan di eksekusi.
void rutinInterupsi0() {......}
di
karenakan fungsi delay() tidak dapat berfungsi pada fungsi attachInterrupt() , maka setelah push button(INT 0
/ INT1) di tekan maka arduino akan menjalankan program yang ada pada fungsi rutinInterupsi0() / rutinInterupsi1(),
tetapi hanya beberapa saat saja dan kembali pada program utama arduino.
2.
Jelaskan pada saat kapan terjadinya proses interupsi ?
è Pada praktikum
eksternal interrupt terjadi saat di beri perintah dari luar dengan memberikan
logika ke pin INT0/INT1.
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();
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(3,INPUT);
digitalWrite(3,HIGH);
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 ?
è Jika Switch di tekan , kemudian di lepas
kembali akan tampil tampilan seperti berikut ini. Ini di sebabkan kodisi switch
yang di pull-up.
Tapi jika di lepas, Program counter pada
main program akan melanjutkan prosesnya kembali.
è Pada saat
praktikum “Interupsi Eksternal” ketika terjadi perubahan logika dari switch
button, fungsi dari interupsi akan di eksekusi.
void rutinInterupsi0() {......}
di
karenakan fungsi delay() tidak dapat berfungsi pada fungsi attachInterrupt() , maka setelah push button(INT 0
/ INT1) di tekan maka arduino akan menjalankan program yang ada pada fungsi rutinInterupsi0() / rutinInterupsi1(),
tetapi hanya beberapa saat saja dan kembali pada program utama arduino.
2.
Jelaskan pada saat kapan terjadinya proses interupsi ?
è Pada praktikum eksternal
interrupt terjadi saat di beri perintah dari luar dengan memberikan logika ke
pin INT0/INT1
3.
Kapankah interupsi mode falling terjadi ? kapankah interupsi mode rising terjadi ? Jelaskan !
è Mode falling
terjadi saat ada perubahan logika HIGH ke LOW.
è Mode rising
terjadi saat ada perubahan logika LOW ke HIGH.
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();
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(3,INPUT);
digitalWrite(3,HIGH);
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 ?
è Pada saat
praktikum “Interupsi Eksternal” ketika terjadi perubahan logika dari switch
button, fungsi dari interupsi akan di eksekusi.
void rutinInterupsi0() {......}
di
karenakan fungsi delay() tidak dapat berfungsi pada fungsi attachInterrupt() , maka setelah push button(INT 0
/ INT1) di tekan maka arduino akan menjalankan program yang ada pada fungsi rutinInterupsi0() / rutinInterupsi1(),
tetapi hanya beberapa saat saja dan kembali pada program utama arduino.
2.
Jelaskan pada saat kapan terjadinya proses interupsi ?
è Pada praktikum
eksternal interrupt terjadi saat di beri perintah dari luar dengan memberikan
logika ke pin INT0/INT1
3.
Kapankah interupsi mode any
change terjadi ? Jelaskan !
è Mode any change akan terjadi jika
ada perubahan logika/nilai pada pin INT0/INT1.
You Might Also Like :