Kamis, 17 Oktober 2013

INTERUPSI EKSTERNAL Arduino Uno

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                    : secukupnya
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 menjalakan 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);
pinMode(2, INPUT);
pinMode(3, INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
void loop() {
lcd.clear();
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.clear();
lcd.setCursor(0,0); lcd.print("Int0 Program");
lcd.setCursor(0,1); lcd.print("Interupt INT0");
delay(2000);
}
void rutinInterupsi1() {
lcd.clear();
lcd.setCursor(0,0); lcd.print("Int1 Program");
lcd.setCursor(0,1); lcd.print("Interupt INT1");
delay(2000);
}
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 menginterupsikan 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.
Prodesur:
1.        Gantilah program pada Percobaan 4.2 dengan sintaks prgram 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();
lcd.clear();
attachInterrupt(0, rutinInterupsi0, RISING);
attachInterrupt(1, rutinInterupsi1, RISING);
pinMode(2, INPUT);
pinMode(3, INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
void loop() {
lcd.clear();
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.clear();
lcd.setCursor(0,0); lcd.print("Int0 Program");
lcd.setCursor(0,1); lcd.print("Interrupt INT0");
delay(2000);
}
void rutinInterupsi1() {
lcd.clear();
lcd.setCursor(0,0); lcd.print("Int1 Program");
lcd.setCursor(0,1); lcd.print("Interrupt INT1");
delay(2000);
}

4.3 Interupsi Eksternal dengan Metode Any Change
            Pada percobaan mode interupsi yang digunakan adalah any change. Dua buah switch akan dihubungkan pada pin INT0 dan INT1. Penekanan switch akan membuay program utama pada fungsi loop terhenti dan mengeksekusi rutin interupsi.
Prosedur:
1.        Gantilah sntaks 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);
pinMode(2, INPUT);
pinMode(3, INPUT);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
}
void loop() {
lcd.clear();
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.clear();
lcd.setCursor(0,0); lcd.print("Int0 Program");
lcd.setCursor(0,1); lcd.print("Interrupt INT0");
delay(2000);
}
void rutinInterupsi1() {
lcd.clear();
lcd.setCursor(0,0); lcd.print("Int1 Program");
lcd.setCursor(0,1); lcd.print("Interrupt INT1");
delay(2000);
}

0 komentar:

Posting Komentar

Pages 3123 »
Twitter Delicious Facebook Digg Stumbleupon Favorites More