#include <Keypad.h>
#include <LiquidCrystal.h>
#include "RTClib.h"
RTC_DS1307 rtc;
#include "DHT.h" // เรียกใช้ไลยรารี่ เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT22
DHT dht (6 , DHT22 ) ; //กำหนดพอร์ตใช้เชื่อมต่อเซ็นเซอร์เป็นพอร์ต 2และเป็นแบบ DHT22
#if defined(ARDUINO) && ARDUINO >= 100
#define printByte(args) write(args);
#else
#define printByte(args) print(args,BYTE);
#endif
LiquidCrystal lcd(4,5,6,7);//กำหนดพอตที่ต่อLCD
// rs-7 e-8 d4-9 d5-10 d6-11 d7-12
uint8_t e[8] = {//ห
0b00000,
0b11011,
0b11011,
0b01110,
0b01010,
0b01010,
0b01010,
0b00000,
};
uint8_t f[8] = {//อ
0b00000,
0b01111,
0b00001,
0b00001,
0b01101,
0b01001,
0b01111,
0b00000,
};
uint8_t g[8] = {//ม
0b00000,
0b11010,
0b11010,
0b01010,
0b01110,
0b11010,
0b11010,
0b00000,
};
/* Keypad setup */
const byte KEYPAD_ROWS = 4; //กำหนดแถวของkeypad
const byte KEYPAD_COLS = 4; //กำหนดคอลัมของkeypad
byte rowPins[KEYPAD_ROWS] = {5, 7, 3, 2}; //กำหนดพอตที่ต่อkeypad
byte colPins[KEYPAD_COLS] = {A3, A2, A1, A0};//กำหนดพอตที่ต่อkeypad
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
void setup() {
dht.begin();
rtc.begin();
rtc.adjust(DateTime(2022, 8, 1, 18, 23, 35));
pinMode(6, OUTPUT);
pinMode(13, OUTPUT);
lcd.begin(20,4);//กำหนดขนาดจอที่ใช้
lcd.setCursor(0,0);lcd.print("Kwanchanok");
lcd.setCursor(0,1);lcd.print("\x05\x06\x07");
}
void loop() {
LCD1(); // เรียกฟังชั่น LCD1
DateTime now = rtc.now();
char key = keypad.getKey();
if(key=='7'){digitalWrite(6, HIGH );tone(13,1000);delay(100);noTone(13);}
if(key=='9'){digitalWrite(6, LOW );tone(13,500);delay(100);noTone(13);}
}
void LCD1() // ประกาศฟังชั่นชื่อ LCD1 ความชื้น
{
float h = dht.readHumidity(); // อ่านค่าความชื้นจากเซ็นเซอร์ไปเก็บไว้ที่ ตัวแปร h
lcd.setCursor(3, 0); // เซ็นตำแหน่งที่จะเขียนจอ LCD ไปที่บรรทัดที่ 1 คอลัม 1
lcd.println("Humidity"); // พิมพ์ข้อความ Humidity บนจอ LCD
lcd.print(h,1); // พิมพ์ค่า ความชื้นที่เก็บอยู่ในตัวแปร h ลงบนจอ LCD
lcd.print("%"); // พิมพ์ข้อความ % บนจอ LCD
float t = dht.readTemperature(); // อ่านค่าอุณหภูมิจากเซ็นเซอร์ไปเก็บไว้ที่ตัวแปร t
lcd.setCursor(3, 0); // เซ็นตำแหน่งที่จะเขียนจอ LCD ไปที่บรรทัดที่ 4 คอลัม 1
lcd.println("Temperature"); // พิมพ์ข้อความ Temperature บนจอ LCD
lcd.print(t,1); // พิมพ์ค่า อุณหภูมิ ที่เก็บอยู่ในตัวแปร t ลงบนจอ LCD
lcd.print("C"); // พิมพ์ข้อความ C บนจอ LCD
}