กดสวิตซ์ ครั้งที่ 1 รีเลย์ ตัวที่ 1 ติด
กดสวิตซ์ ครั้งที่ 2 รีเลย์ ตัวที่ 2 ติด ตัวที่ 1 ดับ
กดสวิตซ์ ครังที่ 3 รีเลย์ 2 ดับ 3 ติด
กดสวิตซ์ ครั้งที่ 4 รีเลย์ 3 ดับ 4 ติด
กดสวิตซ์ ครั้งที่ 5 รีเลย์ ดับทั้งหมด
กดสวิตซ์ อีกครั้งวนกับไปลูปเดิม
ผมจะแก้ไขเพิ่มเติมจากตัวอย่างโค้ต ของกระทู้นี้เพื่อความงาน
ขั้นตอนที่ 1
ผมเริ่มจากตัด Led ออกไป 2 ตัว นั้นคือตัวที่ 12 และ 13 เพราะเราต้องการ output แค่ 4 ตัวเท่านั้น
และตัดโค้ต ที่เราไม่ได้ใช้ออกไปด้วย
อ่าวไม่ทันไรก็เสร็จซะและ แค่ตัดโค้ตออกก็ตรงกับโจทย์ที่ตั้งเลยนะครับจบข่าว
const byte LED1[]={8,9,10,11 };
const int P1=2;
const int debaunceDelay=100;
byte stato=1;
void setup() {
pinMode(LED1[0], OUTPUT);
pinMode(LED1[1], OUTPUT);
pinMode(LED1[2], OUTPUT);
pinMode(LED1[3], OUTPUT);
pinMode(P1, INPUT);
}
void loop() {
if(digitalRead(P1))
{
if(stato<5) stato=stato+1;
else stato=1;
}
switch(stato)
{
case 1:
digitalWrite(LED1[0],LOW);
digitalWrite(LED1[1],LOW);
digitalWrite(LED1[2],LOW);
digitalWrite(LED1[3],LOW);
break;
case 2:
digitalWrite(LED1[0],HIGH);
digitalWrite(LED1[1],LOW);
digitalWrite(LED1[2],LOW);
digitalWrite(LED1[3],LOW);
break;
case 3:
digitalWrite(LED1[0],LOW);
digitalWrite(LED1[1],HIGH);
digitalWrite(LED1[2],LOW);
digitalWrite(LED1[3],LOW);
break;
case 4:
digitalWrite(LED1[0],LOW);
digitalWrite(LED1[1],LOW);
digitalWrite(LED1[2],HIGH);
digitalWrite(LED1[3],LOW);
break;
case 5:
digitalWrite(LED1[0],LOW);
digitalWrite(LED1[1],LOW);
digitalWrite(LED1[2],LOW);
digitalWrite(LED1[3],HIGH);
break;
}
while (digitalRead(P1) == LOW)
{
delay(10);
}
delay(debaunceDelay);
}
อุปกรณ์ที่ใช้
ผลลัพธ์
Simulate
ท่านใด มีวิธีเขียนที่ต่างออกไปสามารถเอามาแชร์กันได้เลยนะครับ