#define Lamp 19  //--สร้างตัวแปรชื่อ Lamp ให้เก็บค่า 19
#define SwLamp 26 //--สร้างตัวแปลชื่อ SwLamp ให้เก็บค่า 26
int BTLamp; //--สร้างตัวแปลชื่อ BTLamp ชนิด int
int BTLampState; //--สร้างตัวแปรชื่อ BTLampState ชนิด int
int LastBTLampState = LOW; //--สร้างตัวแปรชื่อ LastBTLampState ชนิด int
bool LampState = HIGH; //--สร้างตัวแปรชื่อ LampState ชนิด booiean
unsigned long LastDebounceTimeBTLamp = 0; //--สร้างตัวแปรชื่อ LastDebounceTimeBTLamp ชนิด unsigned long ค่าเริ่มต้นเท่ากับ0
unsigned long DebounceDelay = 50; //--the debounce time; increase if the 
//--สร้างตัวแปรชื่อ DebounceDelay ชนิด unsigned long ค่าเริมต้นเท่ากับ 50
void setup() { //--ฟังก์ชัน setup ใช้สำหรับเขียนโปรแกรมกำหนดค่าเริ่มต้นต่างๆ
   pinMode(Lamp,OUTPUT); //--กำหนดให้ขา Lamp เป็นเอาต์พุต
   digitalWrite(Lamp,HIGH); //--ส่งค่าลอจิก HIGH ออกขา Lamp
   pinMode(SwLamp, INPUT_PULLUP); //--กำหนดให้ขา SwLamp เป็นอินพุตและเปิดวงจรพูลอัพด้วย
}
//+++++++++ จบฟังก์ชัน Setup +++++++++++++
void loop()
{
  BTLamp = digitalRead(SwLamp);  //--อ่านคำการกดสวิซ์(กด0,ไม่กด1)เก็บในตัวแปร BTLamp
  if(BTLamp != LastBTLampState) { //--ตรวจสอบเงื่อนไข จริงหรือเท็จ
 LastDebounceTimeBTLamp = millis();//จะรีเซ็ตเวลา debouncing
  }
  if((millis() - LastDebounceTimeBTLamp) > DebounceDelay) { //เช็คเงื่อนไข จริงหรือเท็จ
    if(BTLamp != BTLampState) {//--ตรวจสอบเงื่อนไข จริงหรือเท็จ
      BTLampState = BTLamp;//--นำค่าตัวแปล BTLamp มาใส่ในตัวแปร BTLampSTaTe
      if(BTLampState == LOW) {//--ตรวจสอบเงื่อนไข จริงหรือเท็จ
        LampState = !LampState;//--กลับค่าถ้าในตัวแปร Lapstate เป็น 1 จะกลับให้เป็น 0
      }
    }
  }
  if(LampState==0){//--ตรวจสอบเงื่อนไข จริงหรือเท็จ
    digitalWrite(Lamp, LOW);//--รีเลย์ควบคุมหลอดไฟหยุดทำงาน
  }
  else{
    digitalWrite(Lamp, HIGH);//--รีเลย์ควบคุมหลอดไฟหยุดทำงาน
  }
  LastBTLampState = BTLamp;//--นำค่าตัวแปร BTLamp มาใส่ในตัวแปร LastBTLamState
}
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module
NOCOMNCVCCGNDINLED1PWRRelay Module