// โปรแกรมควบคุมขา 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 วินาที
}
}