Jumat, 22 Maret 2024

Tugas Pendahuluan 2


Percobaan 2 Kondisi3

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 3, komponen utama dari rangkaiannya adalah sensor LCD, LED, motor dan dipswitch.

Kondisi awal dari rangkaian ini adalah motor berputar ke kanan, LCD menampilkan counting dari 0-100, LED running dari LED 1 sampai LED 4 selama 5 detik. Jika diberi interrupt atau gangguan dari dipswitch, maka counting akan dimulai lagi dari 0, motor berhenti, dan LED running kembali dari LED 1.

Kondisi ini terjadi sebab terdapat instruksi atau perintah berupa program yang berjalan pada mikrokontroler yang digunakan, yaitu arduino uno. Pada program terdapat inisialisasi masing-masing pin input dan output serta interrupt. Program yang digunakan tertera pada bagian 3 (Flowchat dan Listing Program) beserta penjelasan berupa komentar pada bagian-bagian program.

  • Flowchart
 
  • Listing Program

#include <LiquidCrystal_I2C.h>

// Definisi pin untuk LED dan motor
#define LED1 13
#define LED2 12
#define LED3 11
#define LED4 10
#define motorPin1 9
#define motorPin2 8
#define interruptPin 2

// Flag volatile untuk menandakan apakah tombol telah ditekan
volatile bool buttonPressed = false;

// Variabel untuk menyimpan nilai count
int count = 0;

// Inisialisasi objek LCD I2C dengan alamat 0x27, 16 kolom, dan 2 baris
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  // Set pin-mode untuk LED, motor, dan pin interrupt
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(interruptPin, INPUT_PULLUP);

  // Menghubungkan interrupt pada pin interruptPin dengan fungsi interruptServiceRoutine saat falling edge terdeteksi
  attachInterrupt(digitalPinToInterrupt(interruptPin), interruptServiceRoutine, FALLING);

  // Inisialisasi LCD dan aktifkan backlight
  lcd.init();
  lcd.backlight();
}

void loop() {
  count++; // Increment nilai 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; // Mengatur count kembali menjadi 0 ketika tombol ditekan
}
 

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

Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

Modul 4

[KEMBALI KE MENU SEBELUMNYA] DAFTAR ISI 1. Tujuan Perancangan 2. Komponen 3. Dasar Teori 4. Listing Program 5. Flowchart...