Percobaan 2
Interrupt Arduino - LED dan LCD
1. Foto Hardware dan Diagram Blok [Kembali]
2. Prosedur Percobaan [Kembali]
1. Susun semua elemen perangkat
2. Buatlah sebuah skrip di dalam aplikasi Arduino IDE
3. Setelah selesai, unggulkan skrip ke papan Arduino
4. Aktifkan skrip dalam simulasi dan uji dengan modul yang ada
2. Buatlah sebuah skrip di dalam aplikasi Arduino IDE
3. Setelah selesai, unggulkan skrip ke papan Arduino
4. Aktifkan skrip dalam simulasi dan uji dengan modul yang ada
Rangkaian Simulasi
Prinsip Kerja
Pada rangkaian ini, digunakan komponen seperti Arduino Uno, LED, LCD, DIP Switch, dan Buzzer. Prinsip kerjanya adalah saat rangkaian dijalankan, Arduino akan terus menghitung angka (Countdown), menyalakan LED dan buzzer. Angka tersebut akan terus berkurang dari 100 hingga 0 dan ditampilkan pada LCD. Perhitungan angka ini akan terus berkurang sebesar satu hingga mendapatkan interupsi. Interupsi terjadi ketika pin tertentu (dalam hal ini pin 2) mengalami perubahan dari logika 1 ke logika 0 (Falling). Ketika interupsi terjadi, program akan mengulang angka yang dihitung sebelumnya, mematikan LED dan buzzer, kemudian melanjutkan perhitungan dari angka sebelumnya sebelum terjadi interupsi. Proses ini akan berulang lagi hingga pin interupsi (pin 2) mengalami perubahan logika dari 1 ke 0 (Falling) kembali.
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);
}
Motor ke kanan,LCD menampilkan counting dari 100 sampai 0, interrupt maka motor DC berhenti 4 detik
Download HTML
Download Rangkaian
Download Program
Download Video Simulasi
Download Datasheet SW-SPDT
Download Datasheet Arduino Uno
Download Datasheet Buzzer
Download Datasheet LCD 2x16
Tidak ada komentar:
Posting Komentar