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
Rangkaian ini menggunakan komponen antara lain yaitu Arduino Uno, Sensor LDR, motor DC, LCD, 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. Sensor LDR yang berperan sebagai ADC (Analog-to-Digital Converter) berperan penting dalam rangkaian ini. Sensor ini akan mendeteksi besaran analog dari lingkungan, yang kemudian diubah menjadi nilai digital yang dapat dipahami oleh Arduino Uno. Nilai analog yang dibaca oleh sensor ADC ini kemudian akan diproses oleh Arduino Uno. Arduino Uno akan membandingkan nilai tersebut dengan nilai referensi yang telah ditetapkan, yaitu 500 dalam rangkaian ini.
Agar rangkaian ini berjalan sesuai dengan kondisi yang di berikan maka Nilai ADC lebih besar dari 500 dan kedua saklar dalam keadaan aktif (ON), dimana terdapat dua saklar pada DIP Switch ini berfungsi sebagai pemicu (trigger). Motor dan LCD hanya akan aktif jika kedua saklar ditekan secara bersamaan.
Jika kondisi tersebut terpenuhi, Arduino Uno akan mengirimkan sinyal ke motor driver (L293D) untuk mengaktifkan motor DC dan membuatnya berputar ke kiri. Secara bersamaan, Arduino Uno juga akan mengirimkan sinyal ke LCD 16x2 untuk menampilkan karakter "Motor kekiri" pada kolom kedua.
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
᭒ Aplikasi↠ klik disini
᭒ Video Percobaan↠ klik disini
Tidak ada komentar:
Posting Komentar