Percobaan 2
Interrupt Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
Foto Hardware:
Diagram Blok:
2. PROSEDUR PERCOBAAN [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan dengan modul
3. RANGKAIAN SIMULASI DAN PRINSIP KERJA[Kembali]
Kondisi
utama (main program) dari rangkaian ini adalah LCD menampilkan
counting dari 0 dan terus bertambah (+1) , LED hidup dan buzzer tidak
berbunyi. Jika diberi interrupt atau gangguan dari dipswitch yang
dihubungkan pada pin 2, maka counting
akan dimulai lagi dari 0, LED mati dan buzzer berbunyi.
Kondisi
ini terjadi sebab terdapat instruksi atau perintah berupa program yang
berjalan pada mikrokontroler yang digunakan, yaitu arduino uno. Pada
program terdapat inisialisasi masing-masing pin input dan output serta
interrupt. Interrupt hanya terjadi pada kondisi FALLING atau dipswitch
dari kondisi on ke off sesuai yang diperintahkan pada program.
Program tertera pada bagian 4 (Flowchart dan Listing Program).
4. FLOWCHART DAN LISTING PROGRAM [Kembali]
Flowchart:
Listing Program:
#include<LiquidCrystal_I2C.h>
#define LED 13 //pin 13 bernama LED
#define tombol 2 //pin 2 (pin interrupt) bernama tombol
#define buzzer 11
volatile byte led_nyala = LOW; //kondisi mula-mula LED mati
static int count = 0;
volatile byte buzzer_nyala = LOW;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
lcd.init();
lcd.backlight();
pinMode(LED,OUTPUT);
pinMode(tombol,INPUT);
attachInterrupt(digitalPinToInterrupt(2),tombol_ditekan, FALLING); //pin 2 (interrupt 0) digunakan sebagai interrupt eksternal
}
void loop() { //Main Program
digitalWrite(LED,HIGH);
digitalWrite(buzzer,LOW);
lcd.setCursor(0,0);
lcd.print("Count:");
lcd.setCursor(0,1);
lcd.print(count);
count += 1; // menambahkan integer count dengan angka 1
delay(1000);
}
//membuat fungsi bernama tombol_ditekan, fungsi ini (ISR) dieksekusi secara otomatis setelah arduino memperoleh sinyal interrupt di pin 2
void tombol_ditekan()
{
digitalWrite(LED,LOW);
digitalWrite(buzzer,HIGH);
count = 0;
delay(100000);
}
#define LED 13 //pin 13 bernama LED
#define tombol 2 //pin 2 (pin interrupt) bernama tombol
#define buzzer 11
volatile byte led_nyala = LOW; //kondisi mula-mula LED mati
static int count = 0;
volatile byte buzzer_nyala = LOW;
LiquidCrystal_I2C lcd(0x27, 20, 4);
void setup() {
lcd.init();
lcd.backlight();
pinMode(LED,OUTPUT);
pinMode(tombol,INPUT);
attachInterrupt(digitalPinToInterrupt(2),tombol_ditekan, FALLING); //pin 2 (interrupt 0) digunakan sebagai interrupt eksternal
}
void loop() { //Main Program
digitalWrite(LED,HIGH);
digitalWrite(buzzer,LOW);
lcd.setCursor(0,0);
lcd.print("Count:");
lcd.setCursor(0,1);
lcd.print(count);
count += 1; // menambahkan integer count dengan angka 1
delay(1000);
}
//membuat fungsi bernama tombol_ditekan, fungsi ini (ISR) dieksekusi secara otomatis setelah arduino memperoleh sinyal interrupt di pin 2
void tombol_ditekan()
{
digitalWrite(LED,LOW);
digitalWrite(buzzer,HIGH);
count = 0;
delay(100000);
}
5. KONDISI [Kembali]
Kondisi
utama (main program), yaitu LCD menampilkan
counting dari 0 dan terus bertambah (+1) , LED hidup dan buzzer tidak
berbunyi akan tertunda jika diberi interrupt atau gangguan dari dipswitch yang
dihubungkan pada pin 2 dengan kondisi FALLING.
6. VIDEO RANGKAIAN [Kembali]
7. ANALISA [Kembali]
8. LINK DOWNLOAD [Kembali]
HTML klik disini
Gambar Hardware klik disini
Gambar Simulasi klik disini
Video Demo klik disini
Listring Program klik disini
Tidak ada komentar:
Posting Komentar