PRAKTIKUM 4
INTERUPSI EKSTERNAL
A. TUJUAN :
1. Mampu membuat program untuk penggunaan fitur interupsi eksternal.
2. Memahami perbedaan mode interupsieksternal (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 akandihubungkan pada pin
interupsi eksternal 0 (INT0) dan interupsi eksternal 1 (INT1). Penekanan switch akan
menginterupsiprogram 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 uploadprogram 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 menginterupsiprogram 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 interupsiyang 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.
Tidak ada komentar:
Posting Komentar