Tugas Pendahuluan 1




1. Foto Hardware dan Diagram Blok [Kembali]

        1. LCD 12 x 6



        2. I2C


        3. Arduino Uno


        4. LED


        5. Buzzer



     6. Dipswitch

     7. Potensiometer


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 }


5. Kondisi [Kembali]

    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"







Posting Komentar

0 Komentar