Percobaan I
Sensor LDR dengan LCD
1. Foto Hardware dan Diagram Blok [Kembali]
1. Arduino Uno
2. LCD
3. Sensor LDR (ADC)
4. DIP Switch
5. L293D
6. Motor DC
7. Potensiomotor
Diagram Blok:
2. Prosedur Percobaan [Kembali]
1. Susun semua elemen perangkat
2. Buatlah sebuah skrip di dalam aplikasi Arduino IDE
3. Setelah selesai, unggulkan skrip ke papan Arduino
4. Aktifkan skrip dalam simulasi dan uji dengan modul yang ada
2. Buatlah sebuah skrip di dalam aplikasi Arduino IDE
3. Setelah selesai, unggulkan skrip ke papan Arduino
4. Aktifkan skrip dalam simulasi dan uji dengan modul yang ada
Rangkaian Simulasi
Prinsip Kerja
Rangkaian ini melibatkan Arduino Uno sebagai otak utama yang terhubung dengan beberapa komponen termasuk sensor LDR, motor DC, LCD 16x2, DIP Switch, Driver L293D, potensiometer, baterai, resistor, power supply, dan ground. Sensor LDR berperan sebagai sensor cahaya yang menghasilkan sinyal analog yang kemudian diubah menjadi nilai digital oleh ADC (Analog-to-Digital Converter) di Arduino Uno. Nilai ADC tersebut kemudian dibandingkan dengan nilai referensi 500. Motor DC dan LCD 16x2 hanya akan aktif jika kedua saklar pada DIP Switch ditekan bersamaan, dan nilai ADC lebih besar dari 500. Arduino Uno mengontrol motor DC untuk berputar ke kiri dan menampilkan pesan "Motor ke kiri" pada LCD 16x2. Potensiometer digunakan untuk mengatur kontras layar LCD, sedangkan resistor berfungsi untuk membatasi arus pada rangkaian.
4. Flowchart dan Listing Program [Kembali]
Flowchart
Listing Program:
#include <LiquidCrystal.h>
// Inisialisasi pin
const int PIN_LDR = A0; // Pin untuk sensor LDR
const int PIN_EN_MOTOR = A1;
const int PIN_OUT1_MOTOR = A2;
const int PIN_DIPSW[] = {2, 3, 4, 5}; // Array pin untuk dip switch
const int PIN_RS_LCD = 13; // Pin RS LCD
const int PIN_EN_LCD = 12; // Pin EN LCD
const int PIN_D4_LCD = 11; // Pin D4 LCD
const int PIN_D5_LCD = 10; // Pin D5 LCD
const int PIN_D6_LCD = 9; // Pin D6 LCD
const int PIN_D7_LCD = 8; // Pin D7 LCD
// Konfigurasi LCD
LiquidCrystal lcd(PIN_RS_LCD, PIN_EN_LCD, PIN_D4_LCD, PIN_D5_LCD, PIN_D6_LCD, PIN_D7_LCD);
void setup() {
// Inisialisasi mode pin
pinMode(PIN_LDR, INPUT); // Inisialisasi pin sensor LDR sebagai input
pinMode(PIN_EN_MOTOR, OUTPUT);
pinMode(PIN_OUT1_MOTOR, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(PIN_DIPSW[i], INPUT_PULLUP); // Inisialisasi pin dip switch dengan pull-up resistor internal
}
// Inisialisasi LCD
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2 karakter
}
// Fungsi untuk memeriksa apakah kedua switch aktif
bool periksaSwitch() {
bool switch1_aktif = digitalRead(PIN_DIPSW[0]) == HIGH; // Membaca status dip switch 1
bool switch2_aktif = digitalRead(PIN_DIPSW[1]) == HIGH; // Membaca status dip switch 2
// Mengembalikan nilai true hanya jika kedua switch diaktifkan
return switch1_aktif && switch2_aktif;
}
void loop() {
// Baca nilai LDR
int nilaiLDR = analogRead(PIN_LDR); // Membaca nilai sensor LDR
// Periksa jika nilai ADC > 500 dan dua switch aktif
if (nilaiLDR > 500 && periksaSwitch()) {
// Hidupkan motor berputar ke kiri
digitalWrite(PIN_EN_MOTOR, HIGH);
digitalWrite(PIN_OUT1_MOTOR, LOW);
// Tampilkan pesan pada baris kedua LCD
lcd.setCursor(0, 1); // Set kursor LCD ke baris kedua
lcd.print("Motor berputar ke kiri"); // Tampilkan pesan pada LCD
} else {
// Matikan motor dan bersihkan LCD jika tidak memenuhi kondisi
digitalWrite(PIN_EN_MOTOR, LOW);
digitalWrite(PIN_OUT1_MOTOR, LOW);
lcd.clear(); // Bersihkan tampilan LCD
}
delay(100); // Delay untuk stabilitas
}
// Inisialisasi pin
const int PIN_LDR = A0; // Pin untuk sensor LDR
const int PIN_EN_MOTOR = A1;
const int PIN_OUT1_MOTOR = A2;
const int PIN_DIPSW[] = {2, 3, 4, 5}; // Array pin untuk dip switch
const int PIN_RS_LCD = 13; // Pin RS LCD
const int PIN_EN_LCD = 12; // Pin EN LCD
const int PIN_D4_LCD = 11; // Pin D4 LCD
const int PIN_D5_LCD = 10; // Pin D5 LCD
const int PIN_D6_LCD = 9; // Pin D6 LCD
const int PIN_D7_LCD = 8; // Pin D7 LCD
// Konfigurasi LCD
LiquidCrystal lcd(PIN_RS_LCD, PIN_EN_LCD, PIN_D4_LCD, PIN_D5_LCD, PIN_D6_LCD, PIN_D7_LCD);
void setup() {
// Inisialisasi mode pin
pinMode(PIN_LDR, INPUT); // Inisialisasi pin sensor LDR sebagai input
pinMode(PIN_EN_MOTOR, OUTPUT);
pinMode(PIN_OUT1_MOTOR, OUTPUT);
for (int i = 0; i < 4; i++) {
pinMode(PIN_DIPSW[i], INPUT_PULLUP); // Inisialisasi pin dip switch dengan pull-up resistor internal
}
// Inisialisasi LCD
lcd.begin(16, 2); // Inisialisasi LCD dengan ukuran 16x2 karakter
}
// Fungsi untuk memeriksa apakah kedua switch aktif
bool periksaSwitch() {
bool switch1_aktif = digitalRead(PIN_DIPSW[0]) == HIGH; // Membaca status dip switch 1
bool switch2_aktif = digitalRead(PIN_DIPSW[1]) == HIGH; // Membaca status dip switch 2
// Mengembalikan nilai true hanya jika kedua switch diaktifkan
return switch1_aktif && switch2_aktif;
}
void loop() {
// Baca nilai LDR
int nilaiLDR = analogRead(PIN_LDR); // Membaca nilai sensor LDR
// Periksa jika nilai ADC > 500 dan dua switch aktif
if (nilaiLDR > 500 && periksaSwitch()) {
// Hidupkan motor berputar ke kiri
digitalWrite(PIN_EN_MOTOR, HIGH);
digitalWrite(PIN_OUT1_MOTOR, LOW);
// Tampilkan pesan pada baris kedua LCD
lcd.setCursor(0, 1); // Set kursor LCD ke baris kedua
lcd.print("Motor berputar ke kiri"); // Tampilkan pesan pada LCD
} else {
// Matikan motor dan bersihkan LCD jika tidak memenuhi kondisi
digitalWrite(PIN_EN_MOTOR, LOW);
digitalWrite(PIN_OUT1_MOTOR, LOW);
lcd.clear(); // Bersihkan tampilan LCD
}
delay(100); // Delay untuk stabilitas
}
Ketika ADC > 500 dan 2 switch aktif, motor berputar ke kiri dan muncul karakter pada kolom 2 LCD
Download HTML
Download Rangkaian
Download Program
Download Video Simulasi
Download Datasheet SW-SPDT
Download Datasheet Sensor LDR
Download Datasheet Arduino Uno
Download Datasheet Motor DC
Download Datasheet L293D
Download Datasheet LCD 2x16
Tidak ada komentar:
Posting Komentar