Percobaan I
ADC - Sensor LDR dengan Motor DC
1. Prosedur [Kembali]
- Rangkailah seperti rangkaian berikut
- Buka Arduino IDE dan masukan listing program
- Upload program ke arduino
- Variasikan nilai ADC dan amati keluarannya pada LCD
2. Hardware dan Diagram Blok [Kembali]
1. Arduino Uno
2. Sensor LDR
3. Dip Switch
4. LCD
5. Logic state
7. Ground
Prinsip Kerja:
Pada rangkaian percobaan 1 kondisi 6 ini menggunakan sensor LDR dan dipswitch yang berfungsi sebagai input, LCD dan motor dc berfungsi sebagai output. Dimana ketika nilai sensor LDR < 200 atau >600 dan tidak ada switch aktif maka output pada motor akan berputar ke kanan 3 detik lalu kiri 4 detik dan pada LCD akan menampilkan "Motor Aktif" pada kolom 1 LCD. Dan ketika nilai sensor LDR berada diluar rentang dan ada switch aktif maka motor tidak berputar, dimana sesuai dengan kondisi 5 yaitu (Ketika ADC < 200 atau >600) dan tidak ada switch aktif, motor berputar ke kanan 3 detik lalu kiri 4 detik dan muncul karakter pada kolom 1 LCD, namun jika ada switch aktif maka motor tidak berputar.
4. Flowchart dan Listing Program [Kembali]
Flowchart:
Listing Program:
#include <LiquidCrystal.h>
// Inisialisasi pin
const int LDR_PIN = A5;
const int MOTOR_EN_PIN = A1;
const int MOTOR_OUT1_PIN = A2;
const int MOTOR_OUT2_PIN = A3;
const int DIPSW_PIN[] = {1, 2}; // Gunakan hanya 2 pin untuk saklar
const int LCD_RS_PIN = 13;
const int LCD_EN_PIN = 12;
const int LCD_D4_PIN = 11;
const int LCD_D5_PIN = 10;
const int LCD_D6_PIN = 9;
const int LCD_D7_PIN = 8;
// Konfigurasi LCD
LiquidCrystal lcd(LCD_RS_PIN, LCD_EN_PIN, LCD_D4_PIN, LCD_D5_PIN, LCD_D6_PIN, LCD_D7_PIN);
void setup() {
// Inisialisasi pin mode
pinMode(LDR_PIN, INPUT);
pinMode(MOTOR_EN_PIN, OUTPUT);
pinMode(MOTOR_OUT1_PIN, OUTPUT);
pinMode(MOTOR_OUT2_PIN, OUTPUT);
for (int i = 0; i < 2; i++) { // Hanya 2 saklar
pinMode(DIPSW_PIN[i], INPUT_PULLUP);
}
// Inisialisasi LCD
lcd.begin(16, 2);
}
void loop() {
// Baca nilai LDR
int ldrValue = analogRead(LDR_PIN);
// Cek kondisi saklar dan LDR
if (digitalRead(DIPSW_PIN[0]) == LOW && digitalRead(DIPSW_PIN[1]) == LOW && (ldrValue < 200 || ldrValue > 600)) {
// Aktifkan motor berputar ke kanan selama 3 detik
digitalWrite(MOTOR_EN_PIN, HIGH);
digitalWrite(MOTOR_OUT1_PIN, LOW);
digitalWrite(MOTOR_OUT2_PIN, HIGH);
// Tampilkan karakter pada kolom 1 LCD
lcd.setCursor(0, 0);
lcd.print("Motor Aktif");
delay(3000); // Motor bergerak ke kanan selama 3 detik
// Berhenti sejenak
digitalWrite(MOTOR_EN_PIN, LOW);
delay(1000); // Pause selama 1 detik
// Aktifkan motor berputar ke kiri selama 4 detik
digitalWrite(MOTOR_EN_PIN, LOW);
digitalWrite(MOTOR_OUT1_PIN, HIGH);
digitalWrite(MOTOR_OUT2_PIN, LOW);
delay(4000); // Motor berputar ke kiri selama 4 detik
// Matikan motor dan bersihkan LCD setelah selesai
digitalWrite(MOTOR_EN_PIN, LOW);
lcd.clear();
} else {
// Matikan motor dan bersihkan LCD jika salah satu saklar dalam keadaan aktif atau kondisi LDR tidak memenuhi
digitalWrite(MOTOR_EN_PIN, LOW);
lcd.clear();
}
delay(100); // Delay untuk stabilitas
}
Pada kondisi percobaan kali ini yaitu percobaan 1 kondisi 6. (Ketika ADC < 200 atau >600) dan tidak ada switch aktif, motor berputar ke kanan 3 detik lalu kiri 4 detik dan muncul karakter pada kolom 1 LCD, namun jika ada switch aktif maka motor tidak berputar.
HTML↠ klik disini
Rangkaian Simulasi ↠ klik disini
Video Simulasi ↠ klik disini
Listing Program ↠ klik disini
Listing Program ↠ klik disini
Tidak ada komentar:
Posting Komentar