TP 1 MODUL 2


Percobaan 2 Kondisi 7
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

  • Rangkaian


  • Prinsip Kerja
Pada percobaan 2 Kondisi 7 bahwa Saat berjalan motor akan berputar ke kanan 5 detik, berhenti 3 detik, berputar ke kiri 5 detik  dan berhenti 7 detik LCD akan menampilkan counting dari 50 - 0 saat interrupt counting diulang dari 50 dan motor dc akan berhenti 3 detik.
Maka prinsip kerja dari rangkaian adalah Dipswitch yang dihubungkan pada pin input pada Arduino berguna sebagai interrupt dan output akan ditampilkan pada LCD serta Motor DC yang dihubungkan pada digital output pada arduino sehingga tercapai kondisi diatas.


  • Flowchart









  • Listing Program
#include  <LiquidCrystal_I2C.h>

#define tombol 2   // pin 2 (pin interrupt) bernama tombol
#define motorPin 11  // pin 11 untuk motor

#define motorDelay 5000 // Waktu rotasi motor dalam milidetik
#define stopDelay 3000  // Waktu motor berhenti dalam milidetik
#define restartDelay 7000 // Waktu sebelum penghitungan dimulai ulang dalam milidetik

volatile int count = 50; // Mulai dari 50

LiquidCrystal_I2C lcd(0x27, 20, 4);

void setup() {
  lcd.init();
  lcd.backlight();
  pinMode(tombol, INPUT);
  pinMode(motorPin, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(2), tombol_ditekan, FALLING);
}

void loop() { // Main Program
  // Rotasi motor ke kanan selama 5 detik
  digitalWrite(motorPin, HIGH);
  delay(motorDelay);

  // Stop motor selama 3 detik
  digitalWrite(motorPin, LOW);
  delay(stopDelay);

  // Rotasi motor ke kiri selama 5 detik
  digitalWrite(motorPin, HIGH);
  delay(motorDelay);

  // Stop motor selama 3 detik
  digitalWrite(motorPin, LOW);
  delay(stopDelay);

  // LCD menampilkan counting dari 50 sampai 0
  lcd.setCursor(0, 0);
  lcd.print("Count: ");
  lcd.setCursor(0, 1);
  lcd.print(count);
 
  // Pengurangan integer count dengan angka 1
  count -= 1;

  // Jika count mencapai 0, reset kembali ke 50 dan tunggu 3 detik
  if (count < 0) {
    count = 50;
    delay(stopDelay);
  }
}

// Fungsi interrupt tombol ditekan
void tombol_ditekan() {
  count = 50; // Mengatur ulang hitungan
  delay(restartDelay);
}

4. Kondisi [Kembali]

Saat berjalan motor akan berputar ke kanan 5 detik, berhenti 3 detik, berputar ke kiri 5 detik  dan berhenti 7 detik LCD akan menampilkan counting dari 50 - 0 saat interrupt counting diulang dari 50 dan motor dc akan berhenti 3 detik.

Simulasi  klik disini
Gambar Simulasi  klik disini
Video Simulasi   klik disini
Listring Program  klik disini


Komentar