LA 1 M2
Mikro 2024 Percobaan 2 Modul 2
Percobaan II
Interupt Arduino
1. Foto Hardware dan Diagram Blok [Kembali]
4. DIP Switch
5. L293D
6. Motor DC
7. Potensiomotor
Diagram Blok:
2. Prosedur Percobaan [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing Program
- Upload program ke arduino
- Mencoba rangkaiannya dengan memvariasikan kondisi interupt (Falling, Rising, High dan Low)
Prinsip Kerja
Pada rangkaian ini, Arduino akan terus menghitung angka dan menampilkan hasilnya pada LCD, sambil juga menyalakan LED secara berkelanjutan. Proses perhitungan angka akan terus berlanjut dengan penambahan satu setiap kali, dan angka tersebut akan terus ditampilkan di LCD. Namun, ketika ada interupsi yang diaktifkan oleh perubahan sinyal dari logika tinggi ke logika rendah (dari 1 ke 0) pada pin 2, proses perhitungan akan dihentikan sementara.
Ketika interupsi terjadi, Arduino akan menghentikan perhitungan angka, mematikan LED, dan menyalakan buzzer. Ini terjadi karena interupsi hanya dipicu ketika kondisi Falling terdeteksi pada pin interupsi. Setelah interupsi terjadi, proses perhitungan dan penyalanan LED akan dilanjutkan kembali hanya setelah pin interupsi kembali ke kondisi Falling.
4. Flowchart dan Listing Program [Kembali]
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);
}
Main program akan berjalan terus dimana pada main program angka akan terus bertambah 1 dan LED akan selalu menyala ketika pin 2 diubah dari kondisi logika 1 ke logika 2 maka akan terjadi interupt yang akan mengulang angka dan mematikan LED dan menyalakan buzzer.
- HTML↠ klik disini
- Aplikasi↠ klik disini
- Video Percobaan↠ klik disini
Komentar
Posting Komentar