#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT22
LiquidCrystal_I2C lcd(0x27,16,2);
DHT dht(DHTPIN, DHTTYPE);
const byte BUTTON_SET = A0;
const byte BUTTON_UP = A1;//RELAY 1 MANUAL
const byte BUTTON_DW = A2;//RELAY 2 MANUAL
const byte BUTTON_CANCEL = A3;
const byte RelayA = 3;
const byte RelayB = 4;
void setup() {
Serial.begin(9600);
lcd.init();
pinMode(BUTTON_SET,INPUT_PULLUP);
pinMode(BUTTON_UP,INPUT_PULLUP);
pinMode(BUTTON_DW,INPUT_PULLUP);
pinMode(BUTTON_CANCEL,INPUT_PULLUP);
pinMode(RelayA, OUTPUT);
pinMode(RelayB, OUTPUT);
}
void loop() {
static boolean Display = true;
static boolean ButtonSet = true;
static boolean ButtonUp = false;
static boolean ButtonDown = false;
static boolean ButtonCancel = false;
float temperatureC = dht.readTemperature();
float temperatureF = dht.readTemperature(true);
float humidity = dht.readHumidity();
if(Display == true){
Display = false;
lcd.setCursor(0,0);
lcd.print("Press any Botton ");
lcd.setCursor(0,1);
lcd.print(" Taveesak Leeump ");
}
if(digitalRead(BUTTON_SET)==0){
delay(1);
if(digitalRead(BUTTON_SET)==0){
if(ButtonSet==false){
ButtonSet = true;
selectMenu();
Display = true;
}
}
}else{
ButtonSet = false;
}
}
void selectMenu (void)
{
boolean Display = true;
boolean Exit = false;
boolean ButtonSet = true;
boolean ButtonUp = false;
boolean ButtonDown = false;
boolean ButtonCancel = false;
boolean RelayA = false;
boolean RelayB = false;
boolean temperatureC = false;
boolean temperatureF = false;
boolean humidity = false;
byte Menu = 0;
const char MenuText[2][17] = {"1: AUTO ",
"2: MANUAL "
};
while(Exit==false){
if(Display==true){
Display = false;
lcd.setCursor(0,0);
lcd.print(" Select Menu ");
lcd.setCursor(0,1);
lcd.print(MenuText[Menu]);
}
if(digitalRead(BUTTON_SET)==0){
delay(1);
if(digitalRead(BUTTON_SET)==0){
if(ButtonSet==false){
ButtonSet = true;
switch(Menu){
case 0: Serial.println("You select AUTO "); break;
case 1: Serial.println("You select MANUAL "); break;
}
}
}
}else{
ButtonSet = false;
}
if(digitalRead(BUTTON_UP)==0){
delay(1);
if(digitalRead(BUTTON_UP)==0){
if(ButtonUp==false){
ButtonUp = true;
if(Menu<=1){
Menu++;
}else{
Menu=1;
}
Display = true;
}
}
}else{
ButtonUp= false;
}
if(digitalRead(BUTTON_SET)==0){ //AUTO
delay(1);
if(digitalRead(BUTTON_SET)==0){
if(ButtonSet==false){
ButtonSet = true;
if(Menu==0){
Menu++;
}
else{
Menu=0;
}
Display = true;
if(Display == true){
// Display = false;
lcd.clear();
} else if (BUTTON_UP == LOW) {
//Serial.println("Celsius");
//Serial.print("Temperature: ");
//Serial.print("temperatureC");
Serial.println("C");
//lcd.clear();
lcd.setCursor(0,0);
lcd.print("TEMP : Celsius");
lcd.setCursor(0,1);
lcd.print("TEMP : ");
lcd.print("temperatureC");
lcd.print((char)223);
lcd.print("C");
} else if (BUTTON_DW == LOW) {
Serial.println("Fahrenheit");
Serial.print("Temperature: ");
Serial.print("temperatureF");
Serial.println("F");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TEMP : Fahrenheit");
lcd.setCursor(0,1);
lcd.print("TEMP : ");
lcd.print("temperatureF");
lcd.print((char)223);
lcd.print("F");
}
else if (temperatureC < 35 && humidity < 75 ) {
digitalWrite(RelayA, LOW);
lcd.clear();
//Serial.println("TEMP < 35: HUM < 75");
Serial.println("RelayA : OFF");
lcd.clear();
lcd.setCursor(0,0);
lcd.println("TEMP<35 HUM<75");
//lcd.setCursor(0,1);
// lcd.print("RelayA : OFF");
}
else if (temperatureC > 35 && humidity > 75 ) {
digitalWrite(RelayA, HIGH);
lcd.clear();
Serial.println("TEMP > 35: HUM > 75");
Serial.println("RelayA : ON");
lcd.clear();
lcd.setCursor(0,0);
lcd.println("TEMP>35 HUM>75");
lcd.setCursor(0,1);
lcd.print("RelayA : ON");
}
delay(500);
}
if(digitalRead(BUTTON_CANCEL)==0){
delay(1);
if(digitalRead(BUTTON_CANCEL)==0){
if(ButtonCancel==false){
ButtonCancel = true;
Exit = true;
if(Display == true){
Display = false;
lcd.setCursor(0,0);
lcd.print(" EXIT ");
lcd.setCursor(0,1);
lcd.print(" COME BACK ");
}
}
}
}else{
ButtonCancel = false;
}
if(digitalRead(BUTTON_DW)==0){
delay(1);
if(digitalRead(BUTTON_DW)==0){
if(ButtonDown==false){
ButtonDown = true;
if(Menu>0){
Menu--;
}else{
Menu=1;
}
Display = true;
}
}
}else{
ButtonDown = false;
}
if(digitalRead(BUTTON_SET)==0){ //MANUAL
delay(1);
if(digitalRead(BUTTON_SET)==0){
if(ButtonSet==false){
ButtonSet = true;
// if(Menu==1){
Menu++;
}
//else
{
Menu=1;
}
Display = true;
if(Display == true){
//Display = false;
lcd.clear();
if (BUTTON_UP == LOW) {
//Serial.println("Celsius");
//Serial.print("Temperature: ");
//Serial.print("temperatureC");
Serial.println("C");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TEMP : Celsius");
lcd.setCursor(0,1);
lcd.print("TEMP : ");
lcd.print("temperatureC");
lcd.print((char)223);
lcd.print("C");
} else if (BUTTON_DW == LOW) {
//Serial.println("Fahrenheit");
//Serial.print("Temperature: ");
//Serial.print("temperatureF");
Serial.println("F");
lcd.clear();
lcd.setCursor(0,0);
lcd.print("TEMP : Fahrenheit");
lcd.setCursor(0,1);
lcd.print("TEMP : ");
lcd.print("temperatureF");
lcd.print((char)223);
lcd.print("F");
}
else
if (BUTTON_UP == 0) {
digitalWrite(RelayA, 0); // ไฟ LED ดับ
} else {
digitalWrite(RelayA, 1); // ไฟ LED 1 ติด
}
lcd.clear();
Serial.println("RelayA : ON");
lcd.clear();
lcd.setCursor(0,0);
lcd.println("TEMP>35 HUM>75");
lcd.setCursor(0,1);
lcd.print("RelayA : ON");
}
else
if (BUTTON_DW == 0) {
digitalWrite(RelayB, 0);
} else {
digitalWrite(RelayB, 1);
}
lcd.clear();
Serial.println("chk");
lcd.clear();
lcd.setCursor(0,0);
lcd.println("TEMP>35 HUM>75");
lcd.setCursor(0,1);
lcd.print("RelayB : ON");
}
}
delay(1);
}
if(digitalRead(BUTTON_CANCEL)==0){
delay(1);
if(digitalRead(BUTTON_CANCEL)==0){
if(ButtonCancel==false){
ButtonCancel = true;
Exit = true;
}
}else{
ButtonCancel = false;
}
}
}