LA 1 M2

 

Mikro 2024 Percobaan 2 Modul 2



Percobaan II

Interupt Arduino

1. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno


        2. LCD




        3. IC PCF8574

      

 

      4. DIP Switch

 

      5. L293D
 

 

      6. Motor DC
   

 

      7. Potensiomotor
   

 

      8. Baterai


        9. Resistor



       10. Power Supply



     11. Ground


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);
}


5. Kondisi [Kembali]

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.













Komentar

Postingan populer dari blog ini

MODUL 1

TUGAS BESAR

MODUL 1 Up & Uc