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