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
   

 

      8. Baterai


        9. Resistor

       10. Power Supply


     11. Ground




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. 

Komponen lainnya yaitu Potensiometer yang berfungsi untuk mengatur kontras layar LCD, resistor berfungsi untuk membatasi arus pada rangkaian agar dapat berjalan dengan baik.

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; }


5. Kondisi [Kembali]

    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

Rangkaian ↠ klik disini

᭒ Video Percobaan↠ klik disini

᭒ Datasheet Arduino↠ klik disini

᭒ Datasheet Potensiometer↠ klik disini

᭒ Datasheet LCD↠ klik disini

᭒ Datasheet DIP Switch↠ klik disini

᭒ Datasheet L293D↠ klik disini

᭒ Datasheet Sensor LDR↠ klik disini

᭒ Datasheet Motor DC↠ klik disini










Komentar

Postingan populer dari blog ini