Tugas Pendahuluan 2 Modul 2

 [KEMBALI KE MENU SEBELUMNYA]


Percobaan 2  Kondisi 3
Interrupt Arduino

1. Prosedur [Kembali]

  • Rangkai semua komponen 
  • Buat program di aplikasi arduino IDE
  • Setelah selesai masukkan program ke arduino 
  • Jalankan program pada simulasi dan cobakan sesuai kondisi


Prinsip Kerja :


Dalam percobaan ini, dipswitch bertindak sebagai input dan motor, LED, serta LCD sebagai outputnya. Ketika kedua switch diaktifkan, output dari switch akan dikirim ke Arduino, dan dari Arduino akan diteruskan ke output. Sehingga motor akan berputar, LCD akan menampilkan counting dari 0 hingga 100, dan LED akan menyala bergantian selama 5 detik. Kemudian, ketika ada interrupt falling (0-1), LCD akan mengulang counting dari 0.




Flowchart:



Listing Program :
#include <LiquidCrystal_I2C.h>

#define LED 13
#define LED1 12
#define LED2 10
#define LED3 9
#define tombol 2
#define motor 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(motor, 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(motor, LOW); // Mematikan motor
    
    // 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(motor, HIGH); // Menyalakan motor
}

void updateLCD() {
  lcd.clear(); // Membersihkan layar LCD
  lcd.setCursor(0,0);
  lcd.print("Count:");
  lcd.setCursor(7,0);
  lcd.print(count); // Menampilkan nilai count
}

4. Kondisi [Kembali]

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  
Rangkaian Simulasi  klik disini
Video Simulasi   klik disini
Listing Program klik disini

Komentar

Postingan populer dari blog ini

Kontrol Tanaman Bayam

Tugas Besar - Kontrol Hidroponik Tanaman Mint

Modul 1 Praktikum Sistem Digital