Sensor LDR dengan LCD
1. Prosedur [Kembali]
- Rangkai semua komponen
- Buat program di aplikasi arduino IDE
- Setelah selesai masukkan program ke arduino
- Jalankan program pada simulasi dan cobakan sesuai kondisi
- Rangkaian
- Prinsip Kerja
- Flowchart
- Listing Program
#include
<LiquidCrystal.h>
LiquidCrystal lcd(13, 12, 11, 10, 9, 8); // Inisialisasi objek LCD dengan pin
13, 12, 11, 10, 9, 8
int sw1 = 2; // Pin switch 1
int sws[] = {2, 3, 4, 5}; // Array pin untuk switch
int numsw = 3; // Jumlah switch yang digunakan
int front = A1; // Pin untuk kontrol motor ke depan
int back = A2; // Pin untuk kontrol motor ke belakang
void setup() {
  // Inisialisasi LCD dengan ukuran
16x2
  lcd.begin(16, 2);
  
  // Set pin-mode untuk switch 1 dan
switch-switch lainnya
  pinMode(sw1, INPUT);
  for (int thesw = 0; thesw < numsw;
thesw++) {
    pinMode(sws[thesw], INPUT);
  }
  
  // Set pin-mode untuk kontrol
motor
  pinMode(front, OUTPUT);
  pinMode(back, OUTPUT);
  
  // Mulai komunikasi serial dengan
baudrate 9600
  Serial.begin(9600);
}
void loop() {
  // Baca status switch 1
  int s1 = digitalRead(sw1);
  
  // Baca nilai sensor LDR
  int ldr = analogRead(A0);
  
  // Cek apakah switch 1 aktif
(HIGH)
  if (s1 == HIGH) {
    int activesw = 0;
    
    // Hitung jumlah switch yang
aktif
    for (int thesw = 0; thesw < numsw;
thesw++) {
      if (digitalRead(sws[thesw]) ==
HIGH) {
        activesw++;
      }
    }
    
    // Tampilkan jumlah switch aktif
melalui Serial Monitor
    Serial.print("Jumlah switch :
");
    Serial.println(activesw);
    delay(200);
    
    // Berdasarkan jumlah switch yang
aktif, lakukan aksi tertentu
    switch (activesw) {
      case 0:
        // Jika tidak ada switch yang
aktif, tampilkan nilai sensor LDR pada LCD
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print(ldr);
        lcd.setCursor(0, 1);
        lcd.print("Nilai
LDR");
        delay(200);
        break;
      case 1:
        // Jika hanya satu switch yang
aktif, tampilkan pesan untuk menjalankan motor pada LCD
        lcd.clear();
        lcd.setCursor(2, 0);
       
lcd.print("Jalankan");
        lcd.setCursor(2, 1);
       
lcd.print("Motor");
        digitalWrite(front, HIGH);
        digitalWrite(back, LOW);
        delay(200);
        break;
      case 2:
        // Jika dua switch aktif, tampilkan
nilai sensor LDR dan kontrol motor sesuai kondisi
        lcd.clear();
        lcd.setCursor(0, 0);
        lcd.print("Nilai LDR :
");
        lcd.setCursor(13, 0);
        lcd.print(ldr);
        if (ldr < 500) {
          // Jika nilai LDR kurang dari
500, putar motor ke kanan
          lcd.setCursor(0, 1);
          lcd.print(" ");
          lcd.setCursor(0, 1);       
          lcd.print("Motor
Kekanan");
          digitalWrite(front,
HIGH);
          digitalWrite(back, LOW);
        } else {
          // Jika nilai LDR lebih dari atau sama
dengan 500, putar motor ke kiri
          lcd.setCursor(0, 1);
          lcd.print(" ");
          lcd.setCursor(0, 1);
          lcd.print("Motor
Kekiri");
          digitalWrite(front, LOW);
          digitalWrite(back, HIGH);
        }
        break;
      case 3:
        // Jika tiga switch aktif,
kontrol motor menggunakan PWM
        int pwm = map(ldr, 0, 1023, 0,
255);
        digitalWrite(back, LOW);
        analogWrite(front, pwm);
        lcd.clear();
       
lcd.setCursor(0, 0);
        lcd.print("PWM =
");
        lcd.print(pwm);
        lcd.setCursor(0, 1);
        lcd.print(" Control
???");
        delay(200);
        break;
    }
    delay(10);
  } else {
    // Jika switch 1 tidak aktif,
bersihkan LCD dan tunggu
    lcd.clear();
    lcd.setCursor(0, 0);
    lcd.print(" ");
    lcd.setCursor(0, 1);
    lcd.print(" ");
    delay(100);
  }
}
Video Simulasi klik disini
Listring Program klik disini
 
 
 
Tidak ada komentar:
Posting Komentar