//Pembuat Program:Rifan Prayoga
//SOAL!
//jika suhu kurang dari 30 derajat C maka lampu 1 menyala selama 3 detik setelah itu padam,
// jika suhu lebih dari 37 derajat C maka lampu 1 dan 2 menyala selama 6.5 detik setelah itu padam,
//dan jika sensor LDR bernilai 0 maka lampu 3 menyala selama 11 detik setelah itu padam
//setelah itu mati,
#include "DHT.h" // Library untuk sensor DHT
#define dhtPin 12 // data pin
//#define dhtType DHT11 // tipe sensor: DHT 11
#define dhtType DHT22 // DHT 22 (AM2302), AM2321
//#define dhtType DHT21 // DHT 21 (AM2301)
DHT dht(dhtPin, dhtType); // Initialise the DHT library
float humidityVal; // humidity %
float tempValC; // temperature in degrees Celcius
//Program 2
int ldrPin = A0; // LDR pin
int ldrVal = 1; // Value of LDR
int ledPin = 2; // Build in LED pin
// LDR Characteristics
const float GAMMA = 0.7;
const float RL10 = 50;
void setup() {
Serial.begin(9600); // Initialise the serial monitor
dht.begin(); // start with reading the DHT sensor
pinMode(4, OUTPUT);
pinMode(13, OUTPUT);
//Void setup prog.2
pinMode(2, OUTPUT);
}
void loop() {
humidityVal = dht.readHumidity(); // humidity
tempValC = dht.readTemperature(); // temperatur Celcius
if(tempValC <30 ){ //pengatur led
digitalWrite(4, HIGH);
delay(3000);
digitalWrite(4, LOW);
}
{
if(tempValC >37 ){ //pengatur led
digitalWrite(4, HIGH);
digitalWrite(13, HIGH);
delay(6500);
digitalWrite(4, LOW);
digitalWrite(13, LOW);
}
else{
digitalWrite(4, LOW);
digitalWrite(13, LOW);
}
// Print all values to the serial monitor, \t prints a tab character
Serial.print("Humidity: ");
Serial.print(humidityVal);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(tempValC);
Serial.println(" °C ");
delay(2000);
}
//prog.2
ldrVal = analogRead(ldrPin); // Read the analog value of the LDR
float voltage = ldrVal / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
if (lux < 200) { // If the LDR value is lower than 200
digitalWrite(ledPin, HIGH); // Turn buildin LED on
delay(11000); //Jeda
digitalWrite(ledPin, LOW);
} else {
digitalWrite(ledPin, LOW); // Turn buildin LED off
}
Serial.println(lux); // Show the value in the serial monitor
delay(1000); // Pause 1000ms
}