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