/*
*
*
* code for LAB 1 v1.0
* created 2022
*by nasrul([email protected])
* matrix number
*
*/
#include <LiquidCrystal_PCF8574.h>//enable lcd 16x2
#include <Wire.h> ///enable protocol serial +i2c
LiquidCrystal_PCF8574 lcd(0x27); // set the LCD address to 0x27 for a 16 chars and 2 line display
#include <SimpleDHT.h>
#include <NTPClient.h>
#include <WiFi.h>
//#include <WiFiUdp.h>
// wajib ada
//wifi setup
const char *ssid = "Wokwi-GUEST";//ssid id
const char *password = "";// ssid password
WiFiUDP ntpUDP;
//NTPClient timeClient(ntpUDP);
NTPClient timeClient(ntpUDP, "asia.pool.ntp.org", 28800, 60000);
//dht 11
int pinDHT22 =16;//pin dht 11
SimpleDHT22 dht22(pinDHT22);
byte temperature = 0;
byte humidity = 0;
//led
const int red_led = 5 ; // RED LED PIN D5
const int yellow_led = 18 ; // yellow LED PIN D6
const int green_led = 19 ; // green LED PIN D7
//masa
String masa;
int minutes=0 ;
int hours= 0;
int seconds=0;
void setup() {
Serial.begin(115200);
//output mode
pinMode(red_led, OUTPUT); // sets the digital d5 as output
pinMode(yellow_led, OUTPUT); // sets the digital d6 as output
pinMode(green_led, OUTPUT); // sets the digital d7 as output
//UART COMM
WiFi.begin(ssid, password);
//wifi connected status
while ( WiFi.status() != WL_CONNECTED ) {
delay ( 500 );
Serial.print ( "." );
}
timeClient.begin();//start com ntp
delay(1000);
Serial.println("lab 1 v1 ");//serial comm write
Serial.println("By Nasrul_2021 ");//serial comm write
//serial i2c com ldc
//lcd
Wire.begin();//i2c serial
Wire.beginTransmission(0x27);
lcd.begin(16, 2); // initialize the lcd
lcd.setBacklight(255);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("lab1v1");
lcd.setCursor(0, 1);
lcd.print("By Nasrul_2022");
delay(1000);
}
void loop() {
timeClient.update();
Serial.println(timeClient.getFormattedTime());
masa = timeClient.getFormattedTime();
hours = timeClient.getHours();
minutes = timeClient.getMinutes();
delay(1000);
//dht data
float temperature = 0;
float humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht22.read2(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT22 failed, err="); Serial.print(SimpleDHTErrCode(err));
Serial.print(","); Serial.println(SimpleDHTErrDuration(err)); delay(2000);
return;
}
Serial.print("Sample OK: ");
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
Serial.print("Time : ");
Serial.print(hours);
//Serial.print(":");
//Serial.print(minutes);
//display lcd
lcd.setCursor(0, 0);
lcd.print("TIME:");
lcd.print(timeClient.getHours());
lcd.print(":");
lcd.print(timeClient.getMinutes());
lcd.print(":");
lcd.print(timeClient.getSeconds());
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print("H:");
lcd.print(humidity);
lcd.print(";");
lcd.print("Temp:");
lcd.print(temperature);
lcd.print((char)223);
lcd.print("C");
///condition rule time led
if ( timeClient.getSeconds() >30 ){
digitalWrite( red_led,HIGH);
}
if ( timeClient.getSeconds() <=30 ){
digitalWrite( red_led,LOW);
}
if (temperature > 25 ){
digitalWrite( yellow_led,HIGH);
}
if (temperature <= 25 ){
digitalWrite( yellow_led,LOW);
}
if (humidity > 41 ){
digitalWrite( green_led,HIGH);
}
if (humidity <= 41 ){
digitalWrite(green_led,LOW);
}
}