Interupsi eksternal pada arduino


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
2. detachInterrupt(interrupt)
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
}
HASIL :

D. PEMBAHASAN LATIHAN :
Pada latihan kali ini kita akan menambahkan bermacam-macam fungsi Kedip dan panggil pada pemilih switch di fungsi loop() pada program yang sudah kita jelaskan diatas tadi. Berikut adalah penjelasan dari scribt yang telah saya tambahkan :
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

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel