// กำหนดขาเชื่อมต่ออุปกรณ์
#define THRESHOLD 2045
const int BUTTON_1_PIN = 14; //ปุ่มสีเหลืองเปลี่ยนโหมด
const int BUTTON_2_PIN = 27; //ปุ่มสีน้ำเงินเป็นโหมด Manual
const int RELAY_PIN = 5 ;
#define WHITE_LED_PIN 2 // ขาเชื่อมต่อ LED สีขาว
#define RED_LED_PIN 12 // ขาเชื่อมต่อ LED สีแดง
const int LDR_SENSOR_PIN = 34 ; // ขาเชื่อมต่อ LDR Sensor (Analog Pin)
bool isAutoMode = false; // สถานะเริ่มต้นโหมด Manual
bool manualRelayState = LOW; // สถานะ Relay ในโหมด Manual
void setup() {
// กำหนดขาอุปกรณ์เป็น INPUT หรือ OUTPUT
pinMode(WHITE_LED_PIN, OUTPUT);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
pinMode(BUTTON_1_PIN, INPUT_PULLUP);
pinMode(BUTTON_2_PIN, INPUT_PULLUP);
pinMode(LDR_SENSOR_PIN, INPUT);
Serial.begin(115200);
}
void loop() {
// อ่านค่าปุ่ม Switch 1 เพื่อเปลี่ยนโหมด
if (digitalRead(BUTTON_1_PIN) == LOW) {
isAutoMode = !isAutoMode; // สลับโหมด
delay(300); // กันปุ่มเด้ง
Serial.print("Mode Changed to: ");
Serial.println(isAutoMode ? "AUTO" : "MANUAL");
}
if (isAutoMode) {
// โหมด Auto: ใช้ LDR Sensor ควบคุม Relay และ LED สีขาว
int ldrValue = analogRead(LDR_SENSOR_PIN); // อ่านค่าจาก LDR
Serial.print("LDR Value: ");
Serial.println(ldrValue);
if (ldrValue < THRESHOLD) { // กรณีแสงมาก
Serial.print("Light!\n");
digitalWrite(RELAY_PIN, LOW); // ปิด Relay
digitalWrite(WHITE_LED_PIN, LOW); // ปิด LED สีขาว
} else { // กรณีแสงน้อย
Serial.print("Dark!\n");
digitalWrite(RELAY_PIN, HIGH); // เปิด Relay
digitalWrite(WHITE_LED_PIN, HIGH); // เปิด LED สีขาว
}
digitalWrite(RED_LED_PIN, HIGH); // เปิด LED สีแดงในโหมด Auto
} else {
// โหมด Manual: ควบคุม Relay และ LED สีแดงผ่าน Button Switch 2
if (digitalRead(BUTTON_2_PIN) == LOW) {
manualRelayState = !manualRelayState; // สลับสถานะ Relay และ LED สีแดง
delay(300);
}
digitalWrite(RED_LED_PIN, LOW); // ปิดไฟสีเเดง
digitalWrite(RELAY_PIN, manualRelayState);
digitalWrite(WHITE_LED_PIN, manualRelayState); // ควบคุม LED สีขาว
digitalWrite(WHITE_LED_PIN, LOW); // ปิด LED สีขาวในโหมด Manual
}
}