Modul 2
(Percobaan 2 Kondisi 6)
1. Siapkan semua komponen yang akan di rangkai pada proteus
2. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam arduino pada proteus
5. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
2. Rangkai rangkaian di proteus sesuai dengan kondisi percobaan.
3. Buat program di arduino di software Arduino IDE.
4. Compile program tersebut dan upload ke dalam arduino pada proteus
5. Setelah program selesai di upload, jalankan simulasi rangkaian pada proteus.
6. Finish
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi Sebelum dirunning:
Prinsip Kerja :
Pada percobaan kali ini kita menggunakan beberapa komponen yaitu Arduino Uno, motor DC, LCD, PCF8574, DIP Switch, Driver L293D, Potensiometer, Baterai, Resistor, power supply, dan Ground.
Percobaan kali ini kita hanya akan menggunakan DIP Switch sebagai input untuk memanggil atau men-trigger kodisi interrupt yang mana kondisi ini berarti akan memak sa berhenti semua program utama yang berjalan dan akan menjalankan intruksi yang berada dalam fungsi interrupt ini. Arduino juga akan terhubung dengan PCF8574 yang berfungsi sebagai ekspander I/O yang mana akan mengurangi penggunaan pin dari arduino dan dari PCF8574 akan terhubung ke LCD dan terakhir arduino juga akan tehubung ke motor driver dan motor DC. Lalu kondisi interrupt akan terpanggil disaat kita men-trigger nya menggunakan DIP Switch yang mana akan langsung menghentikan semua program utama sebelumnya dan menjalankan perintah yang berada dalam fungsi interrupt yaitu motor DC akan berhenti selama 4 detik dan akan kembali berputar semula setelah 4 detik.
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 <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
}
Percobaan 2 Kondisi 6
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]
Download Rangkaian Simulasi Klik Disini
Download HTML Klik Disini
Download Video Percobaan Klik Disini
Download Kodingan Program Klik Disini
Download Datasheet Arduino Klik Disini
Download Datasheet LCD Klik Disini
.jpg)



.png)
.png)
.png)

.png)




Tidak ada komentar:
Posting Komentar