Percobaan I
Sensor LDR dengan LCD
1. Foto Hardware dan Diagram Blok [Kembali]
4. DIP Switch
5. L293D
6. Motor DC
7. Potensiomotor
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 kita mendapatkan kondisi yang meminta kita untuk Pada kondisi 2 dari percobaan 1, Ketika ADC > 500 dan 2 switch aktif, maka motor berputar ke kiri dan muncul karakter pada kolom 2 LCD,disini kita akan memprogramkan program pada arduino uno agar kondisi yang kita dapatkan bisa dijalankan dengan penggunaan komponen yang telah dijelaskan.
4. Flowchart dan Listing Program [Kembali]
Listing Program:
#include <LiquidCrystal.h>
// Inisialisasi pin
const int LDR_PIN = A0; // Pin untuk sensor LDR
const int MOTOR_EN_PIN = A1; // Pin untuk mengontrol enable motor
const int MOTOR_OUT1_PIN = A2; // Pin output motor 1
const int MOTOR_OUT2_PIN = A3; // Pin output motor 2
const int DIPSW_PIN[] = {2, 3, 4, 5}; // Array pin untuk dip switch
const int LCD_RS_PIN = 13; // Pin RS LCD
const int LCD_EN_PIN = 12; // Pin RS LCD
const int LCD_D4_PIN = 11; // Pin D4 LCD
const int LCD_D5_PIN = 10; // Pin D5 LCD
const int LCD_D6_PIN = 9; // Pin D6 LCD
const int LCD_D7_PIN = 8; // Pin D7 LCD
// 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); // Inisialisasi pin sensor LDR sebagai input
pinMode(MOTOR_EN_PIN, OUTPUT); // Inisialisasi pin enable motor sebagai output
pinMode(MOTOR_OUT1_PIN, OUTPUT); // Inisialisasi pin output motor 1 sebagai output
pinMode(MOTOR_OUT2_PIN, OUTPUT); // Inisialisasi pin output motor 2 sebagai output
for (int i = 0; i < 4; i++) {
pinMode(DIPSW_PIN[i], INPUT_PULLUP); // Inisialisasi pin dip switch dengan pull-up resistor internal
}
// Inisialisasi LCD
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2 karakter
}
void loop() {
// Baca nilai LDR
int ldrValue = analogRead(LDR_PIN); // Membaca nilai sensor LDR
// Cek kondisi ADC > 500 dan 2 switch aktif
if (ldrValue > 500 && checkSwitches()) {
// Aktifkan motor berputar ke kiri
digitalWrite(MOTOR_EN_PIN, HIGH); // Aktifkan enable motor
digitalWrite(MOTOR_OUT1_PIN, LOW); // Putar motor ke kiri
digitalWrite(MOTOR_OUT2_PIN, HIGH); // Putar motor ke kiri
// Tampilkan karakter pada baris 2 LCD
lcd.setCursor(0, 1); // Set kursor LCD ke baris kedua
lcd.print("Motor kekiri"); // Tampilkan pesan pada LCD
} else {
// Matikan motor dan bersihkan LCD jika tidak memenuhi kondisi
digitalWrite(MOTOR_EN_PIN, LOW); // Matikan enable motor
digitalWrite(MOTOR_OUT1_PIN, LOW); // Matikan output motor
digitalWrite(MOTOR_OUT2_PIN, LOW); // Matikan output motor
lcd.clear(); // Bersihkan tampilan LCD
}
delay(100); // Delay untuk stabilitas
}
// Fungsi untuk memeriksa apakah dua switch aktif
bool checkSwitches() {
bool switch1_active = digitalRead(DIPSW_PIN[0]) == LOW;
bool switch2_active = digitalRead(DIPSW_PIN[1]) == LOW;
// Mengembalikan nilai true hanya jika kedua switch diaktifkan
return switch1_active && switch2_active;
}
Pada kondisi 2 dari percobaan 1, Ketika ADC > 500 dan 2 switch aktif, maka motor berputar ke kiri dan muncul karakter pada kolom 2 LCD
᭒ HTML↠ klik disini
᭒ Proteus ↠ klik disini
᭒ Video Percobaan↠ klik disini
Tidak ada komentar:
Posting Komentar