Interupsi eksternal pada arduino
Monday, 13 August 2018
Add Comment
PERTEMUAN KE – 11
Interupsi Ekstenal
A.
TUJUAN :
- Mahasiswa dapat menggunakan interupsi eksternal pada aplikasi.
B. TEORI SINGKAT
Interupsi adalah mekanisme menghentikan instruksi yang akan
dieksekusi dan menjalankan instuksi lain karena ada pemicu. Pemicu
dapat dari internal maupun eksternal mikrokontroler. Jika pemicu
berasal dari eksternal maka disebut interupsi ekstenal.
Board Arduino UNO menggunakan mikrokontroler ATMega 328P sehingga
mempunyai dua buah pin interupsi. Interupsi Ekternal 0 menempati
pin D2 dan Interupsi Eksternal 1 di pin D3.
Interupsi eksternal biasanya digunakan untuk menangani masukan yang
seringnya tidak tentu adanya sehingga sistem selalu dapat merespon
kapanpun data ada.
Arduino telah membuatkan fungsi yang digunakan untuk menangani
interupsi eksternal, yaitu:
1. attachInterrupt(interrupt, function, mode)
digunakan untuk mengaktifkan inetrupsi eksternal.
dengan : interrupt= nomer interupsi 0 untuk D2 dan 1 untuk D3.
function= fungsi interrupt handler
mode= LOW → dipicu pada logika rendah
CHANGE
→ dipicu jika ada perubahan
RISING → dipicu pada transisi naik
FALLING → dipicu pada transisi turun
digunakan untuk menonaktifkan interupsi eksternal.
C.
PEMBAHASAN PRAKTIK :
Pada praktikum kali ini kita akan belajar untuk menjalankan program
sederhana pada arduino menggunakan sebuah interupsi
eksternal dimana interupsi eksternal ini biasanya digunakan untuk
menangani masukan yang seringnya tidak tentu adanya sehingga sistem
selalu dapat merespon kapanpun data ada. . Berikut adalah
penjelasan scribtnya :
1.
pembahasan scribt pada
Praktik 1
pada praktik yang pertama ini kita akan menjalankan sebuah program
sederhana tanpa adanya interupsi internal maupun eksternal .
int LED1 =9;
int S1=2; //merupakan deklarasi variabel dimana pin-pin yang
int keadaan=0; //
akan digunakan adalah D9 yang akan digunakan sebagai
//keluaran,pin D2 yang akan digunakan //sebagai masukan
void setup(){
//
Semua kode didalam kurung kurawal akan dijalankan hanya
satu kali ketika program Arduino dijalankan untuk pertama
kalinya.
pinMode (LED1,OUTPUT);
//inisialisasi pin D9 sebagai output
pinMode(S1,INPUT_PULLUP);
//inisialisasi pin D2 sebagai input
}
void loop(){
//Fungsi ini akan dijalankan setelah setup (fungsi void
setup) selesai. Setelah dijalankan satu kali fungsi ini
akan dijalankan lagi, dan lagi secara terus menerus sampai
catu daya (power) dilepaskan.
if(digitalRead(S1)==LOW)
//mengecek apakah masukan digital pada variabel S1 sama
dengan low
{
while(digitalRead(S1)==LOW);
//saklar S1 dilepas
Counter();
//akan memanggil method counter()
}
switch (keadaan) {
case 1:Kedip1();
break;
//untuk mengecek nilai dari variabel keadaan
//jika bernilai true maka akan menjalankan method Kedip1()
}}
void Counter()
//merupakan sebuah method tambahan dengan nama counter()
{
keadaan++;
//untuk menambah 1 hasil nilai dari variabel keadaan
if(keadaan==3);
//mengecek nilai dari variabel keadaan apakah nilainya sama
dengan 3
keadaan=0;
//untuk mengembalikan nilai dari variabel keadaan ke 0
}
void Kedip1()
//method dengan nama kedip yang akan dipanggil pada
penyeleksian switch case
{
digitalWrite(LED1,HIGH);
//digunakan untuk menampilkan hasil keluaran digital pada
pin D9 yaitu high
delay(1000);
//tunda 1000 second
digitalWrite(LED1,LOW);
//digunakan untuk menampilkan hasil keluaran digital pada
pin D9 yaitu low.
delay(1000);
//tunda 1000 second
}
HASIL :
1 2. pembahasan scribt pada Praktik 2
pada praktik yang kedua ini kita akan menjalankan sebuah program
sederhana dengan adanya interupsi eksternal dimana interupsi ini
berfungsi untuk menghentikan instruksi yang akan dieksekusi dan
menjalankan instuksi lain karena ada pemicu.
int Led1=9;
int S1=2; //merupakan deklarasi variabel dimana pin-pin yang
int keadaan=0; //
akan digunakan adalah D9 yang akan digunakan sebagai
//keluaran,pin D2 yang akan digunakan sebagai masukan dan
pin D2 yang akan digunakan //sebagai interupsi eksternal
void setup(){
//
Semua kode didalam kurung kurawal akan dijalankan hanya
satu kali ketika program Arduino dijalankan untuk pertama
kalinya.
pinMode (LED1,OUTPUT);
//inisialisasi pin D9 sebagai output
pinMode(S1,INPUT_PULLUP);
//inisialisasi pin D2 sebagai input
attachInterrupt(digitalPinToInterrupt(2),Counter,RISING);}
//
berfungsi untuk
menghentikan instruksi yang akan dieksekusi dan menjalankan
instuksi pada method Counter() karena ada pemicu
eksternnal dari pin D2
}
void loop(){
//Fungsi ini akan dijalankan setelah setup (fungsi void
setup) selesai. Setelah dijalankan satu kali fungsi ini
akan dijalankan lagi, dan lagi secara terus menerus sampai
catu daya (power) dilepaskan.
if(digitalRead(S1)==LOW)
//mengecek apakah masukan digital pada variabel S1 sama
dengan low
{
while(digitalRead(S1)==LOW);
//saklar S1 dilepas
Counter();
//akan memanggil method counter()
}
switch (keadaan) {
case 1:Kedip1();
break;
//untuk mengecek nilai dari variabel keadaan
//jika bernilai true maka akan menjalankan method Kedip1()
}}
void Counter()
//merupakan sebuah method tambahan dengan nama counter()
{
keadaan++;
//untuk menambah 1 hasil nilai dari variabel keadaan
if(keadaan==3);
//mengecek nilai dari variabel keadaan apakah nilainya sama
dengan 3
keadaan=0;
//untuk mengembalikan nilai dari variabel keadaan ke 0
}
void Kedip1()
//method dengan nama kedip yang akan dipanggil pada
penyeleksian switch case
{
digitalWrite(LED1,HIGH);
//digunakan untuk menampilkan hasil keluaran digital pada
pin D9 yaitu high
delay(1000);
//tunda 1000 second
digitalWrite(LED1,LOW);
//digunakan untuk menampilkan hasil keluaran digital pada
pin D9 yaitu low.
delay(1000);
//tunda 1000 second
}
D.
PEMBAHASAN LATIHAN :
int LED1 =9;
int S1=2;
volatile int keadaan=0;
void setup(){
pinMode (LED1,OUTPUT);
pinMode(S1,INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(2),Counter,RISING);
}
void loop(){
switch (keadaan) {
case 1:Kedip1();
break;
case 2:Kedip2();
break;
case 3:Kedip3();
break;
//pada fungsi loop ini saya menambahkan beberapa fungsi
lain yang nantinya akan dipanggil ketika switch case
dijalankan yaitu Kedip1() , Kedip2() ,Kedip3()
}
}
void Counter(){
keadaan++;
if(keadaan==3){
keadaan=0;}
}
void Kedip1(){
//menambahkan sebuah fungsi dengan nama kedip1() dimana
method ini nantinya akan dipanggil pada switch case
pada funsi loop()
digitalWrite(LED1,HIGH);
delay(1000);
digitalWrite(LED1,LOW);
delay(1000);
//pada fungsi ini nantinya akan membuat lampu led
berkedip 1 kali karena outputan digital yang berniali
High dan Low
}
void Kedip2(){
//menambahkan sebuah fungsi dengan nama kedip2() dimana
method ini nantinya akan dipanggil pada switch case
pada funsi loop()
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(100);
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(100);
//pada fungsi ini nantinya akan membuat lampu led
berkedip 2 kali karena outputan digital yang berniali
High,Low,High dan Low
}
void Kedip3(){
//menambahkan sebuah fungsi dengan nama kedip3() dimana
method ini nantinya akan dipanggil pada switch case
pada funsi loop()
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(100);
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(2000);
digitalWrite(LED1,HIGH);
delay(100);
digitalWrite(LED1,LOW);
delay(100);
//pada fungsi ini nantinya akan membuat lampu led
berkedip 3 kali karena outputan digital yang berniali
High,Low,High ,Low, High dan Low
}
Hasil :
E.
KESIMPULAN :
Dari praktikum tersebut dapat ditarik kesimpulan bahwa Interupsi
merupakan mekanisme menghentikan instruksi yang akan dieksekusi dan
menjalankan instuksi lain karena ada pemicu. Pemicu disini dapat
dari internal maupun eksternal mikrokontroler. Pada praktikum yang
telah kita kerjakan tadi kita telah belajar menggunakan intrupsi
eksternal menggunakan sebuah switch sebagai pemicu.untuk membuat
sebuah interupsi kita dapat menambahkan sebuah funsi yaitu
attachInterrupt(interrupt, function, mode)
0 Response to "Interupsi eksternal pada arduino"
Post a Comment