Tugas Pendahuluan 2 (M2)

 [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 :

Pada rangkaian percobaan ini terdapat dipswitch sebagai inputnya dan sebagai outputnya adalah motor, LED dan LCD.
ketika kedua switch di aktifkan, maka switch akan mengeluarkan output menuju arduino dan dari arduino akan diteruskan ke output, sehingga  motor akan berputar dan lcd akan menampilkan counting dari 0 - 100 serta led akan menyala secara bergantian selama 5 detik, kemudian saat diberi interrupt falling (0-1) maka lcd akan mengulang counting dari 0 kembali.




Flowchart:



Listing Program :
#include <LiquidCrystal_I2C.h>

#define LED1 13
#define LED2 12
#define LED3 11
#define LED4 10
#define motorPin1 9
#define motorPin2 8
#define interruptPin 2


volatile bool buttonPressed = false; // Flag untuk menandakan bahwa tombol telah ditekan
int count = 0; // Variabel untuk menyimpan nilai count

LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C, jumlah kolom, jumlah baris LCD

void setup() {
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);
 

  attachInterrupt(digitalPinToInterrupt(interruptPin), interruptServiceRoutine, FALLING);

  lcd.init();
  lcd.backlight();
}

void loop() {
  count++;

  // Menampilkan nilai count pada LCD
  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("Count: ");
  lcd.print(count);

  // Memutar motor ke kanan
  digitalWrite(motorPin1, HIGH);
  digitalWrite(motorPin2, LOW);

  // Menyalakan LED secara berurutan
  for (int i = 0; i < 4; i++) {
    digitalWrite(LED1, i == 0);
    digitalWrite(LED2, i == 1);
    digitalWrite(LED3, i == 2);
    digitalWrite(LED4, i == 3);
    delay(500);
  }

  // Mematikan motor
  digitalWrite(motorPin1, LOW);
  digitalWrite(motorPin2, LOW);
}

// Fungsi untuk menangani interrupt
void interruptServiceRoutine() {
  count = 0; // Mengulang count menjadi 0
}

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

Tidak ada komentar:

Posting Komentar