#include <Servo.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,20,4);
int val1 = 0; //กล้องวงจรปิด
int ledPin2 = 4; //ห้องนอน
int inputPin2 = 5; //ห้องนอน
int pirState2 = LOW; //ห้องนอน
int val2 = 0; //ห้องนอน
int button = 2;
const float GAMMA = 0.7;
const float RL10 = 50;
Servo servo;
int pos = 0;
int ledPin1 = 7;
const float BETA = 3950;
void setup() {
Serial.begin(115200);
pinMode(ledPin2, OUTPUT);
pinMode(inputPin2, INPUT);
pinMode(button, INPUT);
servo.attach(11);
pinMode(ledPin1, OUTPUT);
}
void checkPIR(){
if(digitalRead(inputPin2) == HIGH){
digitalWrite(ledPin2, HIGH);
}
else if(digitalRead(inputPin2) == LOW){
digitalWrite(ledPin2, LOW);
}
}
void loop() {
//motion sensor ตรวจว่ามีคนอยู่ในห้อง
if(digitalRead(inputPin2) == HIGH){
checkPIR();
}else if(digitalRead(inputPin2) == LOW){
//ใช้ pushbutton เปิด/ปิดไฟ
if(digitalRead(button) == HIGH){//การกดปุ่ม pushbutton เพื่อเปิด LED
digitalWrite(ledPin2, HIGH);
}
if(digitalRead(button) == LOW){//การกดปุ่ม pushbutton เพื่อปิด LED
digitalWrite(ledPin2, LOW);
}
}
//-----------------------------------------------------------------------
//
int analogValue = analogRead(A0);
float voltage = analogValue / 1024. * 5;
float resistance = 2000 * voltage / (1 - voltage / 5);
float lux = pow(RL10 * 1e3 * pow(10, GAMMA) / resistance, (1 / GAMMA));
if(lux >= 50){
pos = 0;
}
if(lux < 50){
pos = 90;
}
servo.write(pos);
//-----------------------------------------------------------------------
int analogValue1 = analogRead(A1);
float celsius = 1 / (log(1 / (1023. / analogValue1 - 1)) / BETA + 1.0 / 298.15) - 273.15;
if(celsius >= 32){
digitalWrite(ledPin1, HIGH);
}
if(celsius < 32){
digitalWrite(ledPin1, LOW);
}
//-----------------------------------------------------------------------
lcd.begin(20,4);
lcd.print(String("lux: " + String(lux)));
lcd.setCursor(0,1);
lcd.print(String("Temperature: " + String(celsius) + String("C")));
}