Tugas Pendahuluan 1 Modul 2
(Percobaan 2 Kondisi 6)
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. 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.
5. Selesai.
3. Rangkaian Simulasi dan Prinsip Kerja
[Kembali]
Rangkaian Simulasi Sebelum dirunning:
Prinsip Kerja :
Pada percobaan ini, kita menggunakan dip switch sebagai inputan. Sedangkan yang berfungsi sebagai keluaran atau output adalah LCD, motor DC, dan LED. Percobaan ini dilakukan untuk mengontrol sebuah motor dengan menggunakan Arduino. Motor dapat berputar ke kanan dan ke kiri sesuai dengan kondisi switch yang terhubung ke pin 2 (DIPSW_2_PIN). Program ini juga menggunakan dua LED (LED_PIN_1 dan LED_PIN_2) untuk memberikan indikasi visual. Saat switch aktif (dipsw_2_state bernilai true), motor akan berhenti selama 3 detik, kemudian berputar ke arah yang berlawanan selama 5 detik, dan akhirnya berhenti lagi selama 7 detik sebelum kembali ke arah awal. LCD menampilkan sebuah counter yang mengurangi nilai dari 50 ke 0 setiap detiknya.
Pada bagian setup(), pin-pin yang terhubung ke motor, switch, dan LED diatur sesuai dengan kebutuhan. Kemudian, interrupt dipasang untuk memantau perubahan pada switch (DIPSW_2_PIN). Ketika interrupt terpanggil (dipsw2Interrupt()), status switch dibaca dan nilai counter direset ke 50, sementara motor dihentikan selama 3 detik dengan kedua LED menyala. Selanjutnya, di dalam loop() program, counter akan dikurangi setiap detik dan jika switch aktif, motor akan menjalani proses yang telah dijelaskan di atas.
4. Flowchart dan Listing Program
[Kembali]
Flowchart :
Flowchart di modul:
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-down 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, HIGH);
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
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]
Datasheet L293D Download
Datasheet PCF8574 Download
Datasheet LED Download
Datahseet resistor Download
Datasheet Dipswitch Download
Datasheet baterai Download
Datasheet Potensiometer Download
Tidak ada komentar:
Posting Komentar