1. Foto Hardware dan Diagram Blok [Kembali]
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
Prinsip Kerja
Pada rangkaian ini menggunakan komponen antara lain yaitu mikrokontroler (ATMEGA328P-PU), dip switch, resistor, LED, LCD, sounder, potensiometer.
Percobaan kali ini kita hanya akan menggunakan DIP Switch sebagai input untuk memanggil atau men-trigger kodisi interrupt yang mana kondisi ini berarti akan memaksa berhenti semua program utama yang berjalan dan akan menjalankan intruksi yang berada dalam fungsi interrupt ini. Arduino juga akan terhubung dengan PCF8574 yang berfungsi sebagai ekspander I/O yang mana akan mengurangi penggunaan pin dari arduino dan dari PCF8574 akan terhubung ke LCD dan terakhir arduino juga akan tehubung ke sounder.
Kemudian kondisi yang kita miliki pada percobaan kali ini yaitu pada program utama yang berjalan yaitu LCD akan melakukan count up. Lalu kondisi interrupt akan terpanggil disaat dip switch mentriggernya, dan langsung menghentikan semua program utama sebelumnya dan menjalankan perintah yang berada dalam fungsi interrupt yaitu sounder akan menyala dan LED running selama 5 detik. Lalu setelah 5 detik, pada LCD akan kembali menampilkan counting dari 0 lagi.
4. Flowchart dan Listing Program [Kembali]

Listing Program:
#include
#define LED 13
#define LED1 12
#define LED2 10
#define LED3 9
#define tombol 2
#define buzzer 11
volatile bool buttonPressed = false; // Flag untuk menandakan bahwa tombol telah ditekan
int count = 0; // Variabel untuk menyimpan nilai count
LiquidCrystal_I2C lcd(0x27, 20, 4); // Inisialisasi LCD
void setup() {
lcd.init(); // Menginisialisasi LCD
lcd.backlight(); // Menyalakan backlight LCD
pinMode(LED, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(tombol, INPUT);
pinMode(buzzer, OUTPUT);
attachInterrupt(digitalPinToInterrupt(tombol), tombol_ditekan, FALLING); // Mengatur interrupt
}
void loop() {
if (buttonPressed) {
unsigned long startMillis = millis();
while (millis() - startMillis < 5000) { // Loop selama kurang dari 5 detik
for (int i = 0; i < 4; i++) {
digitalWrite(LED, i == 0); // Menyalakan LED sesuai urutan
digitalWrite(LED1, i == 1);
digitalWrite(LED2, i == 2);
digitalWrite(LED3, i == 3);
delay(312); // Delay untuk menjaga durasi total running
}
}
digitalWrite(buzzer, LOW); // Mematikan buzzer
// Reset kondisi
digitalWrite(LED, LOW);
digitalWrite(LED1, LOW);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
buttonPressed = false; // Reset flag
count = 0; // Reset count
updateLCD(); // Memperbarui tampilan LCD
} else {
updateLCD();
count += 1; // Menambahkan nilai count
delay(1000);
}
}
void tombol_ditekan() {
buttonPressed = true; // Mengatur flag ketika tombol ditekan
digitalWrite(buzzer, HIGH); // Menyalakan buzzer
}
void updateLCD() {
lcd.clear(); // Membersihkan layar LCD
lcd.setCursor(0,0);
lcd.print("Count:");
lcd.setCursor(7,0);
lcd.print(count); // Menampilkan nilai count
}
Percobaan 3 Kondisi 2 : "Motor ke kanan, LCD menampilkan counting dari 0 sampai 100, interrupt maka counting diulang dari 0 dan LED akan running dari LED 1 hingga 4 selama 5 detik"
- HTML↠ klik disini
- File Rangkaian↠ klik disini
- Video Percobaan↠ klik disini
- Listing Program↠ klik disini
- Datasheet Arduino↠ klik disini
- Datasheet LCD↠ klik disini
- Datasheet LED↠ klik disini
- Datasheet Dipswitch↠ klik disini
0 Komentar