// Program yang dapat membaca suhu, menyalakan kipas, menyalakan lampu,
// dan siram tanaman otomatis) menggunakan mikrokontroller arduino uno.
// Nama : Azizah Qolbu Antika
// NPM : 20552011079
// Kelas : TIF RM - 20 CID A ONLINE
// Mata Kuliah : Pengujian Perangkat Lunak
// Sekolah Tinggi Teknologi Bandung
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
#include <Servo.h>
Servo Azizahservo;
Servo Azizahservo1;
int led = 11;
int lux = 0;
int p;
int Trig = 4;
int Echo = 8;
long duration;
int distance;
const float BETA = 3950;
int buzzer = 12;
void setup() { //mensetup kondisi awal yang ada diperangkat
//meletakkan kode penyiapan di sini, untuk dijalankan sekali:
Serial.begin(9600);
pinMode(Trig, OUTPUT);
pinMode(Echo, INPUT);
lcd.init();
lcd.backlight();
tone(buzzer, 700);
delay(1000);
noTone(buzzer);
lcd.setCursor(0,0);
lcd.print("Ukur Suhu Tubuh");
lcd.setCursor(0,1);
lcd.print("By Azizah Qolbu");
delay(4000);
pinMode(led, OUTPUT);
pinMode(buzzer, OUTPUT);
Azizahservo.attach(9);
Azizahservo1.attach(10);
}
void loop() {
//digunakan untuk mensetup program supaya program dapat bekerja secara aktif
int analogValue = analogRead(A1);
float Celcius = 1 / (log(1 / (1023. / analogValue -1)) / BETA + 1.0 / 298.15) - 273.15;
lcd.clear();
digitalWrite(Trig, LOW);
delayMicroseconds(2);
digitalWrite(Trig, HIGH);
delayMicroseconds(10);
digitalWrite(Trig, LOW);
duration = pulseIn(Echo, HIGH);
distance = duration * 0.0343/2; // 0.343 adalah kecepatan gelombang ultrasonik
if(distance <= 50) {
if((Celcius >= 36.1)&&(Celcius <= 37.2)) {
lcd.setCursor(0,0);
lcd.print("Suhu : ");
lcd.print(Celcius);
lcd.print(" oC");
lcd.setCursor(0,1);
lcd.print("NORMAL, KIPAS ON");
delay(1000);
Azizahservo1.write(180);
}
if((Celcius < 36.1)) {
Azizahservo1.write(90);
lcd.setCursor(0,0);
lcd.print("Suhu : ");
lcd.print(Celcius);
lcd.print(" oC");
lcd.setCursor(0,1);
lcd.print("SUHU RENDAH!");
delay(1000);
}
if((Celcius > 37.2)) {
Azizahservo1.write(90);
lcd.setCursor(0,0);
lcd.print("Suhu : ");
lcd.print(Celcius);
lcd.print(" oC");
lcd.setCursor(0,1);
lcd.print("SUHU TINGGI!");
delay(1000);
}
}
if(distance > 50) {
lcd.setCursor(0,0);
lcd.print("Mohon Mendekat!");
lcd.setCursor(0,1);
lcd.print("Agar Terdeteksi");
delay(1000);
}
intensitasChy();
}
void intensitasChy() {
lux = analogRead(A0);
p = map(lux, 0, 1023, 0, 255);
analogWrite(led, p);
if((p <= 4)&&(p > 3)) {
Azizahservo.write(0);
delay(500);
Azizahservo.write(90);
delay(500);
Azizahservo.write(180);
delay(500);
Azizahservo.write(90);
}
else {
Azizahservo.write(90);
}
}