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