// Example testing sketch for various DHT humidity/temperature sensors
// Written by MUHAMAD ADITYA SAPUTRA(21)/XII-L1 , public domain
// REQUIRES the following Arduino libraries:
// - DHT Sensor Library: https://github.com/adafruit/DHT-sensor-library
// - Adafruit Unified Sensor Lib: https://github.com/adafruit/Adafruit_Sensor
#include "DHT.h"
#include <RTClib.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define DHTPIN 12 // Digital pin connected to the DHT sensor
// Feather HUZZAH ESP8266 note: use pins 3, 4, 5, 12, 13 or 14 --
// Pin 15 can work but DHT must be disconnected during program upload.
// Uncomment whatever type you're using!
//#define DHTTYPE DHT11 // DHT 11
#define DHTTYPE DHT22 // DHT 22 (AM2302), AM2321
//#define DHTTYPE DHT21 // DHT 21 (AM2301)
DHT dht(DHTPIN, DHTTYPE);
RTC_DS1307 rtc;
char namaHari[7][12] = {"Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"};
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 5V!
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 3 (on the right) of the sensor to GROUND (if your sensor has 3 pins)
// Connect pin 4 (on the right) of the sensor to GROUND and leave the pin 3 EMPTY (if your sensor has 4 pins)
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor
// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors. This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.
const int RELAY1 = 10;
const int RELAY2 = 9;
void setup() {
lcd.init();
lcd.backlight ();
lcd.setCursor ( 2,0 );
lcd.println(F("DHT11 + RTC!"));
lcd.setCursor ( 5,1 );
lcd.println(F("ready!"));
delay ( 2000 );
lcd.clear ();
lcd.setCursor ( 2,0 );
lcd.println(F("By : Cipia l"));
delay ( 3000 );
lcd.clear ();
//Serial.begin(9600);
if (! rtc.begin()) {
lcd.println("RTC TIDAK TERBACA");
while (1);
}
if (! rtc.isrunning()) {
lcd.println("RTC is NOT running!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));//update rtc dari waktu komputer
}
pinMode (RELAY1, OUTPUT );
pinMode (RELAY2, OUTPUT );
dht.begin();
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
//float h = dht.readHumidity();//float Mengenalkan Nilai Desimal/Koma.
int h = dht.readHumidity();//int Mengenalkan Nilai Angka.
// Read temperature as Celsius (the default)
//float t = dht.readTemperature();
int t = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float f = dht.readTemperature(true);
int f = dht.readTemperature(true);
// Check if any reads failed and exit early (to try again).
if (isnan(h) || isnan(t) || isnan(f)) {
lcd.setCursor ( 0,0 );
lcd.println(F("Failed to read from DHT sensor!"));
return;
}
// Compute heat index in Fahrenheit (the default)
float hif = dht.computeHeatIndex(f, h);
// Compute heat index in Celsius (isFahreheit = false)
float hic = dht.computeHeatIndex(t, h, false);
//Program LCD 1
DateTime now = rtc.now();
lcd.setCursor(0,0);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
//lcd.print("|");
lcd.print(F("T:"));
lcd.print(t);
lcd.print(F("*C"));
lcd.setCursor(0,1);
//lcd.print(namaHari[now.dayOfTheWeek()]);
//lcd.print(",");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
//lcd.print('|');
lcd.setCursor(10,1);
lcd.print(F("H:"));
lcd.print(h);
lcd.print("%");
delay(3000);
lcd.clear();
//Program LCD 2
/*DateTime now = rtc.now();
lcd.setCursor(3,0);
lcd.print(now.day(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.year(), DEC);
//lcd.print("|");
lcd.setCursor(1,1);
lcd.print(namaHari[now.dayOfTheWeek()]);
lcd.print(",");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
//lcd.print('|');
delay(3000);
lcd.clear();
lcd.setCursor (0,0);
lcd.print(F(" Temp : "));
lcd.print(t);
lcd.print("*C");
lcd.setCursor (5,1);
lcd.print(F(" : "));
lcd.print(f);
lcd.print("*F");
delay ( 2000 );
lcd.clear();
lcd.setCursor (0,0);
lcd.print(F(" Humi : "));
lcd.print(h);
lcd.print(" %");
delay ( 2000 );
lcd.clear();*/
//
/*
lcd.setCursor (0,0);
lcd.print(F(" Temp : "));
lcd.print(t);
lcd.print(" *C");
lcd.setCursor (5,1);
lcd.print(F(" : "));
lcd.print(f);
lcd.print(" *F");
delay ( 2000 );
lcd.clear();
lcd.setCursor (0,0);
lcd.print(F(" Humi : "));
lcd.print(h);
lcd.print(" %");
delay ( 2000 );
lcd.clear();
*/
//if ( t <= 30 || f <= 80 )
if ( t <= 30 )
{ digitalWrite ( RELAY1, HIGH);
digitalWrite ( RELAY2, LOW);
lcd.setCursor(4,0);
lcd.print(F("RELAY 1!"));
lcd.setCursor(5,1);
lcd.print(F("aktif!"));
delay (2000);
lcd.clear(); }
//if ( t >= 30 || f >= 80 )
if ( t >= 30 )
{ digitalWrite ( RELAY1, HIGH);
digitalWrite ( RELAY2, HIGH);
lcd.setCursor(3,0);
lcd.print(F("RELAY 1&2!"));
lcd.setCursor(5,1);
lcd.print(F("aktif!"));
delay (2000);
lcd.clear(); }
}