#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#include "DHT.h"
//LDC 20x4
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
//Keypad 4x4
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 33, 25, 26, 27 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 18, 5, 4, 2 }; // Pins connected to R1, R2, R3, R4
char key;
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
//Relay + LED
#define TempLED 15
#define HumiLED 19
//Check state for each valve
/*
0 = close
1 = open
*/
int valveWaterState = 0;
int valveNState = 0;
//Count time (s)
unsigned long previousTime = 0;
byte seconds;
byte real_seconds;
/////////////////////////////
char* password = "427";
int position = 0;
void setup() {
Serial.begin(9600);
//Display LCD 20x4
lcd.init();
lcd.backlight(); // turn on backlight
//DHT22
//Relay LED
pinMode(TempLED, OUTPUT);
pinMode(HumiLED, OUTPUT);
pinMode(32, OUTPUT);
pinMode(35, OUTPUT);
pinMode(14, INPUT_PULLUP);
pinMode(34, INPUT_PULLUP);
MainMenu();
}
void loop() {
key = keypad.getKey(); //รับค่าจาก Keypad
if (key) { // if (key) {
switch (key) { //เลือกทำ
case 'A': //แสดงค่าจากเซนเซอร์
lcd.clear();
while (1) {
key = keypad.getKey();
if (key == '*') { //กดกลับ Main Menu
lcd.clear();
MainMenu();
break;
} else {
lcd.setCursor(0, 1);
lcd.print("input bottle PET");
//เช็ค Error ของ DHT22
int val = digitalRead(14); // input bottle receive big PET 1500 CC
int val1 = digitalRead(34); // input bottle receive big PET 1500 CC
if (val == 0 ){
digitalWrite(32, HIGH); //ON or 1;
delay(1000); // หน่วงเวลาไว้
digitalWrite(32, LOW); // OFF or 0;
delay(1000);
digitalWrite(32, HIGH); //ON or 1;
delay(1000); // หน่วงเวลาไว้
digitalWrite(32, LOW); // OFF or 0;
delay(1000);
}
else if (val1 == 0 ){
digitalWrite(35, HIGH); //ON or 1;
delay(1000); // หน่วงเวลาไว้
digitalWrite(35, LOW); // OFF or 0;
delay(1000);
digitalWrite(35, HIGH); //ON or 1;
delay(1000); // หน่วงเวลาไว้
digitalWrite(35, LOW); // OFF or 0;
delay(1000);
} else{
digitalWrite(32, LOW); // OFF or 0;
digitalWrite(35, LOW); // OFF or 0;
}
//แสดงข้อความ
//lcd.setCursor(0, 2);
//lcd.print("System running . . .");
lcd.setCursor(0, 3);
lcd.print("Press * back to Menu");
/*
//หน่วงเวลา
delay(1000);
//ล้างจอ LCD
lcd.clear();
*/
}
}
break;
default: //แจ้งเตือนหากกดนอกเหลือจากที่กำหนด
lcd.clear();
while (1) {
key = keypad.getKey();
if (key == '*') { //กดกลับ Main Menu
lcd.clear();
MainMenu();
break;
} else { //แสดงข้อความแจ้งเตือน
MainMenu();
}
};
}
}
}
void MainMenu() {
lcd.setCursor(0, 0);
lcd.print("Press A-C to Select");
lcd.setCursor(0, 1);
lcd.print("Press A - Sensor");
lcd.setCursor(0, 2);
lcd.print("Press B - Valve");
lcd.setCursor(0, 3);
lcd.print("Press C - Setting");
}