คำตอบที่ได้รับเลือกจากเจ้าของกระทู้
ความคิดเห็นที่ 4
จากโค๊ดตัวอย่าง
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
เราได้อะไร จากตัวอย่างนี้ คือการกำหนดขา การสั่งให้สว่าง การสั่งให้ดับ เวลาที่จะหน่วง
อ่า แล้วถ้าเราจะทำไฟฉุกเฉิน ที่รถฉุกเฉินเขาติดกันละ .... มาดูรูปแบบกันก่อน
สมมุติว่ามีไฟ 8 ดวง เรียงตามนี้ B1 R1 G1 W1 W2 G2 R2 B2 ....Bสีน้ำเงิน Rสีแดง Gสีเขียว Wสีขาว
กระบวนการกระพริบ จากนอกเข้าใน
- B1 B2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(1)
- R1 R2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(2)
- G1 G2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(3)
- W1 W2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(4)
ต่อด้วย กระบวนการกระพริบ จากในออกข้างนอก
- G1 G2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(5)
- R1 R2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(6)
- B1 B2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(7)
แล้วก็วนการทำงาน ในออกนอก นอกออกใน
เราก็เขียนได้ว่า
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
ซึ่งจะเห็นว่า มีการกระทำที่ซ้ำกันอยู่ อาจเขียนเป็นฟังชั่นย่อยการทำงานของแต่ละลำดับ แล้วเรียกใช้เอาก็ได้
เช่น
เราก็เขียนเป็น
void B1B2_Blink()
{
/// ปิดดวงที่ไม่เกี่ยวข้อง
digitalWrite(R1, LOW); digitalWrite(R2, LOW);
digitalWrite(G1, LOW); digitalWrite(G2, LOW);
digitalWrite(W1, LOW); digitalWrite(W2,LOW);
/// กระพริบ ดวงที่เกี่ยวข้อง
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งแรก
digitalWrite(B1, LOW); digitalWrite(B2, LOW); delay(200); /// ดับ เพื่อกระพริบครั้งที่2
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งที่2
}
แบบอื่นๆก็เหมือนกัน เวลาเรียกใช้ก็
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
เราได้อะไร จากตัวอย่างนี้ คือการกำหนดขา การสั่งให้สว่าง การสั่งให้ดับ เวลาที่จะหน่วง
อ่า แล้วถ้าเราจะทำไฟฉุกเฉิน ที่รถฉุกเฉินเขาติดกันละ .... มาดูรูปแบบกันก่อน
สมมุติว่ามีไฟ 8 ดวง เรียงตามนี้ B1 R1 G1 W1 W2 G2 R2 B2 ....Bสีน้ำเงิน Rสีแดง Gสีเขียว Wสีขาว
กระบวนการกระพริบ จากนอกเข้าใน
- B1 B2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(1)
- R1 R2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(2)
- G1 G2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(3)
- W1 W2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(4)
ต่อด้วย กระบวนการกระพริบ จากในออกข้างนอก
- G1 G2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(5)
- R1 R2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(6)
- B1 B2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(7)
แล้วก็วนการทำงาน ในออกนอก นอกออกใน
เราก็เขียนได้ว่า
[Spoil] คลิกเพื่อดูข้อความที่ซ่อนไว้
ซึ่งจะเห็นว่า มีการกระทำที่ซ้ำกันอยู่ อาจเขียนเป็นฟังชั่นย่อยการทำงานของแต่ละลำดับ แล้วเรียกใช้เอาก็ได้
เช่น
/* B1 B2 กระพริบเร็วๆ 2 ครั้ง ที่เหลือดับ...........(1) */
/// ปิดดวงที่ไม่เกี่ยวข้อง
digitalWrite(R1, LOW); digitalWrite(R2, LOW);
digitalWrite(G1, LOW); digitalWrite(G2, LOW);
digitalWrite(W1, LOW); digitalWrite(W2,LOW);
/// กระพริบ ดวงที่เกี่ยวข้อง
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งแรก
digitalWrite(B1, LOW); digitalWrite(B2, LOW); delay(200); /// ดับ เพื่อกระพริบครั้งที่2
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งที่2
มันจะซ้ำกับ รูปแบบที่ 7/// ปิดดวงที่ไม่เกี่ยวข้อง
digitalWrite(R1, LOW); digitalWrite(R2, LOW);
digitalWrite(G1, LOW); digitalWrite(G2, LOW);
digitalWrite(W1, LOW); digitalWrite(W2,LOW);
/// กระพริบ ดวงที่เกี่ยวข้อง
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งแรก
digitalWrite(B1, LOW); digitalWrite(B2, LOW); delay(200); /// ดับ เพื่อกระพริบครั้งที่2
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งที่2
เราก็เขียนเป็น
void B1B2_Blink()
{
/// ปิดดวงที่ไม่เกี่ยวข้อง
digitalWrite(R1, LOW); digitalWrite(R2, LOW);
digitalWrite(G1, LOW); digitalWrite(G2, LOW);
digitalWrite(W1, LOW); digitalWrite(W2,LOW);
/// กระพริบ ดวงที่เกี่ยวข้อง
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งแรก
digitalWrite(B1, LOW); digitalWrite(B2, LOW); delay(200); /// ดับ เพื่อกระพริบครั้งที่2
digitalWrite(B1, HIGH); digitalWrite(B2, HIGH); delay(200); /// สว่างครั้งที่2
}
void loop()
{
B1B2_Blink();
R1R2_Blink();
G1G2_Blink();
W1W2_Blink();
G1G2_Blink();
R1R2_Blink();
}
เรื่องของลูกเล่นมันอยู่ที่ เราจะเรียงการแสดงผลยังไง ....หวังว่า คงเป็นแนวทางให้ได้ {
B1B2_Blink();
R1R2_Blink();
G1G2_Blink();
W1W2_Blink();
G1G2_Blink();
R1R2_Blink();
}
แสดงความคิดเห็น
ขอโค๊ด Arduino MEGA หน่อยครับ แบบไฟสเต็ปต่างๆ ต้องส่งสิ้นเดือนแล้ว