// โปรแกรมควบคุมขา Digital INPUT
//
int sw  = 16;			  	//ประกาศตัวแปรชื่อ sw มีค่าเท่ากับ  GP16
int led1 = 21;			  	//ประกาศตัวแปรชื่อ led มีค่าเท่ากับ GP21
int led2 = 19;			  	//ประกาศตัวแปรชื่อ led มีค่าเท่ากับ GP19
int led3 = 18;			  	//ประกาศตัวแปรชื่อ led มีค่าเท่ากับ GP18
int flag1 = 0;        //ประกาศตัวแปรชื่อ flag1 มีค่าเท่ากับ "0"
void setup()
{
  pinMode(sw, INPUT); 		//กำหนดขา GP16 เป็น Input
  pinMode(led1,OUTPUT); 		//กำหนดขา GP21 เป็น Output
  pinMode(led2,OUTPUT); 		//กำหนดขา GP19 เป็น Output
  pinMode(led3,OUTPUT); 		//กำหนดขา GP18 เป็น Output
  Serial.begin(9600); 		//คำสั่งเริ่มการสื่อกับคอมพิวเตอร์ผ่าน USB ด้วยความถี่ 9600
}
void loop()
{
 if(digitalRead (sw)==LOW){       //รับค่าจากตัวแปร sw(GP16)
    delay(50);                    //หน่วงเวลา
    while(digitalRead(sw)==LOW); //ตรวจสอบการกดสวิทซ์ถ้ายังกดอยู่จะไม้ทำงานบรรทัดต่อไป
    //Serial.println(sw);          //
    delay(50);                   //
    flag1 = !flag1;              //เปลี่ยนค่าตัวแปร flag1 เป็นตรงข้าม
  }
    if(flag1==0){				        //ถ้าตัวแปร val มีค่าเท่ากับศูนย์
     	digitalWrite(led1,1);	    //ส่งค่า "1"(5V)ให้ตัวแปร led(GP21)ทำให้หลอดดับ
      delay(500);               //หน่วงเวลา 0.5 วินาที
      digitalWrite(led2,1);	    //ส่งค่า "1"(5V)ให้ตัวแปร led(GP19)ทำให้หลอดดับ
      delay(500);               //หน่วงเวลา 0.5 วินาที
      digitalWrite(led3,1);	    //ส่งค่า "1"(5V)ให้ตัวแปร led(GP18)ทำให้หลอดดับ
      delay(500);               //หน่วงเวลา 0.5 วินาที
      }else{					          //ถ้าไม่เป็นไปตามเงื่อนไขข้างบนคือ val เป็น "1"
  	  digitalWrite(led1,0);	    //ส่งค่า "0"(0V)ให้ตัวแปร led(GP21)ทำให้หลอดติด
      delay(500);               //หน่วงเวลา 0.5 วินาที
      digitalWrite(led2,0);	    //ส่งค่า "1"(5V)ให้ตัวแปร led(GP19)ทำให้หลอดดับ
      delay(500);               //หน่วงเวลา 0.5 วินาที
      digitalWrite(led3,0);	    //ส่งค่า "1"(5V)ให้ตัวแปร led(GP18)ทำให้หลอดดับ
      delay(500);               //หน่วงเวลา 0.5 วินาที
  }
}