Selasa, 29 Oktober 2013

INTERUPSI EKSTERNAL


TUJUAN :

1.      Mampu membuat program untuk penggunaan fitur interupsi eksternal.

2.      Memahami perbedaan mode interupsi eksternal (falling, rising, dan any change).


PERALATAN :

1.
Komputer

2.
Arduino Uno

3.
Project board

4.
Kabel  jumper

5.
Switch pushbutton

6.
LCD

7.
Potensiometer 10K



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
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.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 ?
Jawab:
Ketika switch INT0 (Pin Digital 2) ditekan, maka pada layar LCD akan menampilkan teks “Interrupt INT0” (InterupsiEksternal 0), sedangkan ketika switch INT1 (Pin Digital 3) yang ditekan, maka layar LCD akan menampilkan teks “InterruptINT1” (InterupsiEksternal 1). Dan ketika switch di lepas, maka program looping berhitungnya akan kembali bekerja kembali.

2.     Jelaskan pada saat kapan terjadinya proses interupsi ?
Jawab:
Proses Interupsi terjadi ketika salah satu switch (Switch INT0 atau Switch INT1) dilepas kemudian ditekan.

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 ?
Jawab:
Ketika switch INT0 (Pin Digital 2) di tekan, LCD tetap akan berlooping (Berhitung), tetapi pada saat switch di lepas akan terjadi proses interupsi, pada layar LCD muncul teks “Interrupt INT0” (InterupsiEksternl 0) dan akan muncul di LCD selama 2 detik (Delay 2000). Begitu juga ketika switch INT1 (Pin Digital 3) di tekan, LCD tetap akan berlooping (Berhitung) dan pada saat switch di lepas, akan terjadi proses interupsi dan pada layar LCD muncul teks “Interrupt INT1” (InterupsiEksternl1) selama 2 detik (Delay 2000).

2.     Jelaskan pada saat kapan terjadinya proses interupsi ?
Jawab:
Proses Interupsi terjadi pada saat salahsatu switch (INT0 atau INT1) ditekan kemudian dilepas.

3.    Kapankah interupsi mode falling terjadi ? kapankah interupsi mode rising terjadi ? Jelaskan !
Jawab:
Interupsi mode Falling terjadi jika salah satu switch ditekan (Logika HIGH menuju LOW), sedangkan Interupsi mode Rising akan terjadi jika salahsatu switch dilepas (Logika LOW menuju 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 membuatprogram utama pada fungsi loop terhenti dan mengeksekusi rutin int erupsi.

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 loopincrement 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 ?
Jawab:
            Pada saat switch INT0 (Pin Digital 2) di tekan, maka proses interrupt akan terjadi “Interupt INT0” (InterupsiEksternal 0) akan muncul di layar LCD selama 2 detik (Delay 2000), (tekan dan tahan switch selama 5 detik/beberapa detik) selama beberapa detik maka looping increasenya tetap berjalan, dan ketika switch di lepas, maka proses interupsi akan kembali muncul lagi di layar selama 2 detik sebelum program looping increase kembali berjalan secara normal kembali. Begitu pula dengan switch INT1. Pada saat switch INT1 (Pin Digital 3) di tekan, maka proses interrupt akan terjadi“Interupt INT1” (InterupsiEksternal 1), akan muncul di layar LCD selama 2 detik (Delay 2000), (tekan dan tahan switch selama 5 detik/beberapa detik) selama beberapa detik maka looping increasenya tetap berjalan, dan ketika switch di lepas, maka proses interupsi akan kembali muncul lagi di layar selama 2 detik sebelum program looping increase kembali berjalan secara normal.

2.      Jelaskan pada saat kapan terjadinya proses interupsi ?
Jawab:
Proses interupsi akan terjadi jika salahsatu switch (INT0 atau INT1) ditekan dan dilepas.
3.      Kapankah interupsi mode any change terjadi ? Jelaskan !
Jawab:
Proses Interupsi akan terjadi apabila switch ditekan dan dilepas. (LogikaHIGH menuju LOW atau sebaliknya Logika LOW menuju HIGH).