-
Notifications
You must be signed in to change notification settings - Fork 1
/
5_sensors_lcd.ino
115 lines (92 loc) · 3.46 KB
/
5_sensors_lcd.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 6, 5, 4, 3, 2); // pin Arduino terhubung LCD
const int TMP36_Pin = A0; // pin Arduino terhubung Temperature Sensor
const int ping_Pin = A1; // pin Arduino terhubung Ultrasonic Sensor
const int photo_Pin = A2; // pin Arduino terhubung Photoresistor
const int pir_Pin = A3; // pin Arduino terhubung PIR Sensor
const int gas_Pin = A4; // pin Arduino terhubung Gas Sensor
void setup() {
lcd.begin(16, 2); // atur jumlah kolom dan baris LCD
}
void loop() {
read_sensor_gas();
read_sensor_pir();
read_sensor_photoresistor();
read_sensor_ultrasonic();
read_sensor_temperature();
}
void read_sensor_gas(){
/* baca dari Gas Sensor */
int value = analogRead(gas_Pin); // baca Gas Sensor
if (value < 400){
lcd.setCursor(12,0);
lcd.print(" *");
} else if (value >= 400 && value < 500){
lcd.setCursor(12,0);
lcd.print(" **");
} else if (value >= 500 && value < 700){
lcd.setCursor(12,0);
lcd.print(" ***");
} else if (value >= 700){
lcd.setCursor(12,0);
lcd.print("****");
}
}
void read_sensor_pir(){
/* baca dari PIR Sensor */
int pirStat = digitalRead(pir_Pin); // baca PIR Sensor
lcd.setCursor(0,1); // atur posisi kursor
if (pirStat == 1){
lcd.print("Gerak");
} else {
lcd.print("Diam ");
}
}
void read_sensor_photoresistor(){
/* baca dari Photoresistor */
int value = analogRead(photo_Pin); // baca Photoresistor
lcd.setCursor(0,0); // atur posisi kursor
if (value < 900){
lcd.print("Gelap ");
} else {
lcd.print("Terang");
}
}
void read_sensor_ultrasonic(){
/* baca dari Ultrasonic Sensor */
long dur, cm; // simpan nilai durasi dan jarak (cm)
pinMode(ping_Pin, OUTPUT); // atur pin sebagai OUTPUT
digitalWrite(ping_Pin, LOW); // beri sinyal awal LOW
delayMicroseconds(2); // jeda 2 µs
digitalWrite(ping_Pin, HIGH); // trigger sensor dengan sinyal HIGH
delayMicroseconds(5); // trigger sensor selama 5 µs
digitalWrite(ping_Pin, LOW); // beri sinyal LOW
pinMode(ping_Pin, INPUT); // atur pin sebagai INPUT
dur = pulseIn(ping_Pin, HIGH); // sinyal HIGH untuk dapat durasi (dalam µs)
cm = ms_to_cm(dur); // konversi µs ke cm
lcd.setCursor(7,0); // atur posisi kursor (kolom 13, baris 0)
if (cm >= 2 && cm <= 330){
lcd.print(cm);
} else {
lcd.print("0");
}
lcd.print(" "); // 2 spasi isi perbedaan ruang antara 1 dan 3 digit
}
long ms_to_cm(long ms) {
// kecepatan suara 340 m/s atau 29 µs/cm
// dibagi dua untuk mencari jarak sensor-objek
return ms / 29 / 2;
}
void read_sensor_temperature(){
/* baca dari Temperature Sensor */
int TMP36_read; // simpan nilai output Temperature sensor
double TMP_value; // simpan nilai suhu (derajat Celcius)
TMP36_read = analogRead(TMP36_Pin); // baca sensor analog
TMP_value = (double)TMP36_read / 1024; // hitung persentase dari pembacaan input
TMP_value = TMP_value * 5; // dikali dengan 5V untuk mendapat nilai tegangan
TMP_value = TMP_value - 0.5; // dikurangi dengan offset
TMP_value = TMP_value * 100; // konversi menjadi derajat Celcius
lcd.setCursor(7,1); // atur posisi kursor (kolom 0, baris 1)
lcd.print(TMP_value);
lcd.print(" "); // 2 spasi isi perbedaan ruang antara 4 dan 6 digit
}