Senin, 25 Maret 2024

TP 2




Tugas Pendahuluan 1
 Modul 2



1. Prosedur
[Kembali]

1. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
2. Tulis program untuk arduino di software Arduino IDE.
3. Compile program tadi, lalu upload ke dalam arduino.
4. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.

2. Hardware dan Diagram Blok [Kembali]

Hardware :

. Arduino Uno


        2. LCD




        3. IC PCF8574


        

 

      4. DIP Switch

 


 

      5. L293D

 
      6. Motor DC
 

 
      7. Potensiomotor
   

 

      8. Baterai



        9. Resistor




Diagram Blok :








3. Rangkaian Simulasi dan Prinsip Kerja [Kembali]
 
Rangkaian Simulasi :






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]

Flowchart :









Listing Program :

#include<LiquidCrystal_I2C.h> #define LED1 3 //pin 13 bernama LED #define tombol 2 //pin 2 (pin interrupt) bernama tombol #define LED2 4 #define front 12 #define back 13 static int count = 0; unsigned long previousMillis = 0; // variabel untuk menyimpan waktu terakhir motor berjalan atau berhenti const unsigned long motorInterval = 20000; // interval total waktu untuk motor (5 detik + 3 detik + 5 detik + 7 detik = 20 detik) LiquidCrystal_I2C lcd(0x27, 16, 2); void tombol_ditekan() { digitalWrite(LED1,HIGH); digitalWrite(LED2,HIGH); //delay(1000); digitalWrite(front, LOW); digitalWrite(back, LOW); delay(3000); count = 0; } void setup() { lcd.init(); lcd.backlight(); pinMode(LED1,OUTPUT); pinMode(LED2,OUTPUT); pinMode(front,OUTPUT); pinMode(back,OUTPUT); pinMode(tombol,INPUT); attachInterrupt(digitalPinToInterrupt(2),tombol_ditekan, FALLING); //pin 2 (interrupt 0) digunakan sebagai interrupt eksternal } void loop() { //Main Program unsigned long currentMillis = millis(); unsigned long elapsedMillis = currentMillis - previousMillis; if (elapsedMillis < 5000) { // Motor berputar ke kanan selama 5 detik digitalWrite(front, HIGH); digitalWrite(back, LOW); } else if (elapsedMillis < 8000) { // Motor mati selama 3 detik digitalWrite(front, LOW); digitalWrite(back, LOW); } else if (elapsedMillis < 13000) { // Motor berputar ke kiri selama 5 detik digitalWrite(front, LOW); digitalWrite(back, HIGH); } else if (elapsedMillis < 20000) { // Motor mati selama 7 detik digitalWrite(front, LOW); digitalWrite(back, LOW); }else { digitalWrite(front, HIGH); digitalWrite(back, LOW); } int nilai; nilai = 15+count; digitalWrite(LED1,LOW); digitalWrite(LED2,LOW); lcd.setCursor(0,0); lcd.print("Count:"); lcd.setCursor(0,1); lcd.print(nilai); count -- ; // menambahkan integer count dengan angka 1 if (nilai <= 0){ count =0; } delay(1000); }


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

6. Video Simulasi [Kembali]






7. Download File [Kembali]

HTML                    klik disini
File Rangkaian       klik disini
Video Percobaan    klik disini
Listing Program     klik disini
Datasheet Arduino klik disini
᭒ Datasheet Potensiometer↠ klik disini
᭒ Datasheet LCD↠ klik disini
᭒ Datasheet DIP Switch↠ klik disini
᭒ Datasheet L293D↠ klik disini
᭒ Datasheet Motor DC↠ klik disini
᭒ Datasheet PCF8574↠ klik disini






Tidak ada komentar:

Posting Komentar