LA M2 P2





Modul 2
Percobaan 2

1. Prosedur [Kembali]
1. Susunlah komponen sesuai dengan eksperimen dan opsi yang telah dipilih.
2. Sintesiskan kode menggunakan Arduino IDE.
3. Pindahkan program yang telah disusun ke dalam Arduino Uno.
4. Lakukan pengujian program pada rangkaian eksperimen sesuai dengan preferensi yang diinginkan.
5. Langkah penyelesaian dilakukan setelah berhasil menguji program secara efektif pada rangkaian yang dipilih.

2. Hardware dan Diagram Blok [Kembali]
a. Hardware
1. arduino uno
2. Push Button

3. LCD

4.  Buzzer


5.  LED


6. Resistor



Diagram Blok:

3. Rangkaian Percobaan dan Prinsip Kerja [Kembali]
a. Rangkaian Percobaan




   Pada rangkaian diatas push button sebagai input dan LCD, LED, Buzzer sebagai output. Ketika tidak ada interupsi, LED terus menyala, dan layar LCD menampilkan nilai hitungan yang terus bertambah. Nilai hitungan ini ditambah +1 setiap kali melalui lingkaran loop. Namun, ketika terjadi perubahan posisi switch maka akan dijalankan interupt dimana LED dimatikan, buzzer dinyalakan, dan nilai hitungan direset menjadi nol untuk digit pertama. Ini terjadi karena interupsi hanya terjadi ketika sinyal pada pin 2 berubah dari logika 1 ke logika 0 (falling) atau sebaliknya. Setelah itu, program menunggu selama 100 detik sebelum melanjutkan eksekusi lagi.

4. Flowcharth dan Listing program[Kembali]
Flowchart:



b. 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(6,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]

Percobaan 2

6. Video Demo [Kembali]

1. Bagaimana switch pada percobaan dapat mengaktifkan suatu instruksi baru? Bandingkan rangkaian tugas pendahuluan dengan rangkaian saat praktikum!

Jawab:

Switch terhubung ke pin 2 Arduino sebagai sumber interrupt eksternal. Ketika switch tersebut ditekan atau perubahan posisi atau kaki interrupt pada Arduino aktif (pin 2), fungsi tombol_ditekan() akan dieksekusi sebagai interrupt service routine (ISR) melalui fungsi attachInterrupt(digitalPinToInterrupt(2), tombol_ditekan, FALLING), di mana interrupt akan dieksekusi setiap terjadi perubahan pada switch (hal ini diatur oleh fungsi FALLING). Ketika interrupt terjadi, Arduino akan menjalankan void interupt-nya, yaitu tombol_ditekan(), di mana dalam program, LED akan menyala dan buzzer akan diaktifkan, sementara variabel count akan direset menjadi 0, namun dikarena tidak ada lcd.clear() sehingga hanya digit pertama yang terreset ke nol.


2. Jelaskan proses diagram dari Interrupt!

Jawab:


ketika void loop dilaksanakan, Posis switch berubah maka interrupt dieksekusi yaitu void tombol_ditekan setelah selesai interupt dijalankan, program kembali melanjutkan program sebelumnya di void loop


8. Download File [Kembali]
Download HMTL Klik disini
Download Simulasi Rangkaian Klik disini
Download Video Demo Klik disini
Download Datasheet ARDUINO UNO klik disini
Download Datasheet LCD 2X16 klik disini











Tidak ada komentar:

Posting Komentar