Tugas Pendahuluan 1 M2

 



Percobaan 2 KONDISI 6

 Interrupt pada Arduino


1. Foto Hardware dan Diagram Blok [Kembali]

        1. Arduino Uno


        2. LCD




        3. IC PCF8574

     

 

      4. DIP Switch

 

      5. L293D
 

 

      6. Motor DC
   

 

      7. Potensiomotor
   

 

      8. Baterai


        9. Resistor



       10. Power Supply



     11. Ground

    12. LED

 




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 percobaan ini output yang digunakan adalah LCD,Motor DC dan LED, dan inputan interrupt berupa dipswitch. untuk output LCD disini menggunakan I2C yang terhubung ke kaki A4 dan A5 ,dan untuk motor yang menggunakan driver motor terhubung ke pin 12 dan 13 arduino, sitch untuk interrupt terhubung ke pin 2 arduino dan LED terhubung ke pin 3 dan 4 arduino.Rangkaian ini menggunakan komponen antara lain yaitu Arduino Uno, motor DC, LCD, PCF8574, DIP Switch, Driver L293D, Potensiometer, Baterai, Resistor, power supply, dan Ground.  

    Rangkaian ini memanfaatkan  Arduino Uno sebagai pusat kendali, yang terhubung dengan motor DC dan LCD 16x2 untuk menampilkan informasi dan mengontrol gerakan motor. Untuk menampilkan informasi, Arduino memanfaatkan LCD 16x2. Namun, karena keterbatasan jumlah pin I/O yang dimiliki, perantara berupa PCF8574 dibutuhkan untuk menghubungkan keduanya. PCF8574 bertindak sebagai ekspander I/O, memperluas jangkauan pin Arduino sehingga dapat berinteraksi dengan LCD secara efisien.

    Sementara itu, motor DC yang terhubung ke Arduino melalui pin digital akan berputar ke kanan. Arah putaran ini dikontrol oleh program yang diunggah ke Arduino. Lalu  terdapat switch yang terhubung ke Arduino. Switch ini berfungsi untuk memicu interrupt yang mana ketika switch ditekan, interrupt dipicu. Interrupt ini menyebabkan program  menunda sementara eksekusi fungsi utama dan beralih ke fungsi penanganan interrupt.

    Selama interrupt aktif, program yang telah ditetapkan untuk menangani interrupt akan dijalankan. Dalam rangkaian ini, program yang dijalankan saat interrupt adalah menghentikan motor DC selama 3 detik. Selain menghentikan motor, fungsi penanganan interrupt  juga  dapat  diprogram untuk  menghentikan  "Counting" pada LCD.  Artinya, nilai hitungan yang ditampilkan pada LCD akan "membeku" pada angka terakhir yang ditampilkan saat tombol ditekan. Setelah durasi interrupt selesai (3 detik berlalu), program akan kembali menjalankan fungsi utama. Fungsi utama ini melanjutkan pengendalian motor dan penghitung mundur dari kondisi terakhir sebelum interupsi.Komponen lainnya yaitu Potensiometer yang berfungsi untuk mengatur kontras layar LCD, resistor berfungsi untuk membatasi arus pada rangkaian agar dapat berjalan dengan baik dan terhindar dari kerusakan akibat arus atau tegangan yang berlebihan.

 


4. Flowchart dan Listing Program [Kembali]





Listing Program:


#include <Wire.h> #include <LiquidCrystal_PCF8574.h> // Inisialisasi pin const int MOTOR_OUT1_PIN = 12; // Pin untuk kontrol motor (output 1) const int MOTOR_OUT2_PIN = 13; // Pin untuk kontrol motor (output 2) const int DIPSW_2_PIN = 2; const int LED_PIN_1 = 3; // Pin untuk LED 1 const int LED_PIN_2 = 4; // Pin untuk LED 2 // Inisialisasi objek LCD LiquidCrystal_PCF8574 lcd(0x27); // Alamat PCF8574 // Variabel global volatile bool dipsw_2_state = false; // Volatile digunakan untuk variable yang bisa diakses secara asinkron oleh interrupt int counting = 50; // Inisialisasi counting awal void setup() { // Inisialisasi pin mode pinMode(MOTOR_OUT1_PIN, OUTPUT); // Mengatur pin motor sebagai output pinMode(MOTOR_OUT2_PIN, OUTPUT); // Mengatur pin motor sebagai output pinMode(DIPSW_2_PIN, INPUT); // Dipsw_2 menggunakan pull-up resistor pinMode(LED_PIN_1, OUTPUT); // Mengatur pin LED 1 sebagai output pinMode(LED_PIN_2, OUTPUT); // Mengatur pin LED 2 sebagai output // Inisialisasi LCD lcd.begin(16, 2); // Attach interrupt untuk Dipsw_2 attachInterrupt(digitalPinToInterrupt(DIPSW_2_PIN), dipsw2Interrupt, CHANGE); // Memulai motor berputar ke kanan digitalWrite(MOTOR_OUT1_PIN, HIGH); digitalWrite(MOTOR_OUT2_PIN, LOW); } void loop() { // Tampilkan counting dari 50 sampai 0 di LCD for (counting; counting >= 0; counting--) { lcd.setCursor(0, 0); lcd.print("Counting: "); lcd.print(counting); delay(1000); // Delay 1 detik // Cek status Dipsw_2 setiap detik if (dipsw_2_state) { // Berhenti motor selama 3 detik jika Dipsw_2 aktif digitalWrite(MOTOR_OUT1_PIN, LOW); digitalWrite(MOTOR_OUT2_PIN, LOW); digitalWrite(LED_PIN_1, HIGH); // Hidupkan LED 1 digitalWrite(LED_PIN_2, HIGH); // Hidupkan LED 2 delay(3000); // Delay 3 detik // Menghidupkan kembali motor berputar ke kiri setelah 3 detik digitalWrite(MOTOR_OUT1_PIN, LOW); digitalWrite(MOTOR_OUT2_PIN, HIGH); digitalWrite(LED_PIN_1, LOW); // Matikan LED 1 digitalWrite(LED_PIN_2, LOW); // Matikan LED 2 delay(5000); // Delay 5 detik // Menghentikan motor selama 7 detik setelah berputar ke kiri digitalWrite(MOTOR_OUT1_PIN, LOW); digitalWrite(MOTOR_OUT2_PIN, LOW); delay(7000); // Delay 7 detik // Menghidupkan kembali motor berputar ke kanan setelah 7 detik digitalWrite(MOTOR_OUT1_PIN, HIGH); digitalWrite(MOTOR_OUT2_PIN, LOW); // Reset counting ke 50 counting = 50; } } } // Fungsi interrupt untuk Dipsw_2 void dipsw2Interrupt() { // Membaca status Dipsw_2 dipsw_2_state = digitalRead(DIPSW_2_PIN); // Setelah interrupt, reset counting ke 50 dan hentikan motor selama 3 detik counting = 50; digitalWrite(MOTOR_OUT1_PIN, LOW); digitalWrite(MOTOR_OUT2_PIN, LOW); digitalWrite(LED_PIN_1, HIGH); // Hidupkan LED 1 digitalWrite(LED_PIN_2, HIGH); // Hidupkan LED 2 delay(3000); // Delay 3 detik }


5. Kondisi [Kembali]

   Percobaan 2 Kondisi 6 :Motor ke kanan  5 detik lalu mati 3 detik berputar ke kiri 5 detik dan mati 7 detik ,LCD menampilkan counting dari 50 sampai 0,interrupt maka counting diulang dari 50 dan motor DC berhenti 3 detik dan 2 led hidup setiap kali dilakukan interrupt


᭒ HTML↠ klik disini
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini

    










Tidak ada komentar:

Posting Komentar

Cover Sisdig

  Bahan Presentasi Untuk Matakuliah Sistem Digital 2023 OLEH: Marsanda Nabilla 2110953014 Dosen Pengampu: Darwison,MT Referensi: a. Anil K. ...