#include <LiquidCrystal.h> //เรียกใช้ Library ของขจอ LCD
#include <Wire.h>
#include "RTClib.h"
#include "DHT.h"
#include <Keypad.h>
// ตัวอย่าง LiquidCrystal lcd(rs, E, D4, D5, D6, D7);
LiquidCrystal lcd(A2,A0, 10, 9, 8, 7); //เซ็ตพอร์ตที่ต่อ LCD
// 117 + 3 = 120
RTC_DS1307 rtc;
DHT dht (2 , DHT22 ) ;
/* Keypad setup */
const byte KEYPAD_ROWS = 4;
const byte KEYPAD_COLS = 4;
byte rowPins[KEYPAD_ROWS] = { 6, 5, 4, 3};
byte colPins[KEYPAD_COLS] = {12, 0, A1, A3};
char keys[KEYPAD_ROWS][KEYPAD_COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '3', 'D'}
};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, KEYPAD_ROWS, KEYPAD_COLS);
char month[12][4] = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"};
byte customChar1[] = {
B00000,
B00000,
B00000,
B11010,
B11010,
B01010,
B01111,
B01011
};
byte customChar2[] = {
B00000,
B00000,
B00001,
B11010,
B01100,
B01010,
B01010,
B01110
};
byte customChar3[] = {
B00010,
B01110,
B11110,
B00000,
B01110,
B10010,
B00010,
B00110
};
byte customChar4[] = {
B00111,
B00100,
B00000,
B01110,
B01000,
B01110,
B00010,
B01110
};
void setup() {
lcd.begin(20, 4); //เซ็ตขนาด LCD ที่ต่อ 20*4
lcd.setCursor(0,0);
lcd.print("Chanawee 632021117");
//นำตัวเก็บข้อมูลอักษรมาเปลี่ยนเป็นตัวแปรตามลำดับ
lcd.createChar(1, customChar1); //ตัวแปร 1 สร้างอักษรลำดับที่ 2 โดยมี customChar1 เป็นตัวอย่าง
lcd.createChar(2, customChar2);
lcd.createChar(3, customChar3);
lcd.createChar(4, customChar4);
//สร้างและแสดงผลตัวอักษรภาษาไทย
lcd.setCursor(8, 1);
lcd.write((byte)2);
lcd.setCursor(9, 1);
lcd.write((byte)1);
lcd.setCursor(10, 1);
lcd.write((byte)3);
lcd.setCursor(11, 1);
lcd.write((byte)4);
if (! rtc.begin()) {
Serial.println("-----");
Serial.flush();
abort();
}
dht.begin();
float h = dht.readHumidity(); // อ่านค่าความชื้นจากเซ็นเซอร์ไปเก็บไว้ที่ ตัวแปร h
lcd.setCursor(0, 3);
lcd.print("HUM "); // พิมพ์ข้อความ Humidity บนจอ LCD
lcd.print(h,0); // พิมพ์ค่า ความชื้นที่เก็บอยู่ในตัวแปร h ลงบนจอ LCD
lcd.print("%"); // พิมพ์ข้อความ % บนจอ LCD
lcd.print(" ");
float t = dht.readTemperature(); // อ่านค่าอุณหภูมิจากเซ็นเซอร์ไปเก็บไว้ที่ตัวแปร t
lcd.print("TEMP "); // พิมพ์ข้อความ Temperature บนจอ LCD
lcd.print(t,1); // พิมพ์ค่า อุณหภูมิ ที่เก็บอยู่ในตัวแปร t ลงบนจอ LCD
lcd.print("C"); // พิมพ์ข้อความ C บนจอ LCD
delay(1000);
pinMode(11, OUTPUT);
}
void loop()
{
DateTime now = rtc.now();
lcd.setCursor (0, 2);
lcd.print(now.day(), DEC);
lcd.print("/");
lcd.print(month[now.month()]);
lcd.print("/");
lcd.print(now.year()+543, DEC);
lcd.print(" - ");
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(':');
lcd.print(now.second(), DEC);
lcd.setCursor (0, 2);
lcd.print("");
char key = keypad.getKey();
if(key=='2'){digitalWrite(11, HIGH);tone(13,1500);delay(100);noTone(13);}
if(key=='0'){digitalWrite(11, LOW);tone(13,2000);delay(100);noTone(13);}
}