
หลักคิด/ทฤษฎีความรู้
สี่แยกไฟแดง สร้างขึ้นมาเพื่ออำนวยความสะดวกในการขับรถข้ามแยกให้เกิดความปลอดภัย โดยสี่แยก มีการติดตั้งไฟแดงไว้ทุกแยก รวม 4 ชุด
ในการปล่อยรถ จะมีวิธีการปล่อยหลาบแบบ แล้วแต่ผู้ออกแบบว่าจะปล่อยแบบใด เช่น
- ปล่อยทีละแยก แยกละ 30 วินาที
- ปล่อยทีละสาย คือแยกตรงข้ามพร้อมกัน
- ปล่อยทีละสาย คือแยกตรงข้ามพร้อมกัน แล้วปล่อยแล้วขวาต่างหาก
- กำหนดการปล่อยรถโดยตำรวจจราจร (การทำด้วยมือ)
ในที่นี้ จะให้นักเรียนฝึก การปล่อยรถทีละสาย หรือปล่อยแยกตรงข้ามพร้อมกัน โดยจะมีขั้นตอนการทำงานคือ
- เปิดไฟเขียวเส้นแรก ( แยก 1-2) ไฟแดง เส้น 2 (แยก 3-4) เป็นเวลา 30 วินาที
- ปิดไฟเขียวเส้นแรก ( แยก 1-2) เปิดไฟกระพริบสีเหลือง 2 ครั้ง ( แยก 1-2)
- เปิดไฟแดงเส้นแรก ( แยก 1-2) ไฟเขียว เส้น 2 (แยก 3-4) เป็นเวลา 30 วินาที
- ปิดไฟเขียวเส้น2 (แยก 3-4) เปิดไฟกระพริบสีเหลือง 2 ครั้ง(แยก 3-4)
- วนกลับไปที่ข้อ 1
ขั้นแรก ต่อวงจรกันก่อน

ขั้นต่อมา เขียน Code
ส่วนแรก กำหนดตัวแปร และตั้งค่า
int y1g = 13; int y1y = 12; int y1r = 11; int y2g = 10; int y2y = 9; int y2r = 8; int y3g = 7; int y3y = 6; int y3r = 5; int y4g = 4; int y4y = 3; int y4r = 2; void setup() { pinMode(y1g, OUTPUT); pinMode(y1y, OUTPUT); pinMode(y1r, OUTPUT); pinMode(y2g, OUTPUT); pinMode(y2y, OUTPUT); pinMode(y2r, OUTPUT); pinMode(y3g, OUTPUT); pinMode(y3y, OUTPUT); pinMode(y3r, OUTPUT); pinMode(y4g, OUTPUT); pinMode(y4y, OUTPUT); pinMode(y4g, OUTPUT); }
ส่วนต่อมา กำหนดโปรแกรม
void loop() { //รอบแรก ไฟเขียว แยก 1-2 //แยก 1 เขียว digitalWrite(y1g, HIGH); digitalWrite(y1y, LOW); digitalWrite(y1r, LOW); //แยก 2 เขียว digitalWrite(y2g, HIGH); digitalWrite(y2y, LOW); digitalWrite(y2r, LOW); //แยก 3 แดง digitalWrite(y3g, LOW); digitalWrite(y3y, LOW); digitalWrite(y3r, HIGH); //แยก 4 แดง digitalWrite(y4g, LOW); digitalWrite(y4y, LOW); digitalWrite(y4r, HIGH); delay(3000); // Wait for 1000 millisecond(s) //ไฟกระพริบ แยก 1-2 //กระพริบ แยก 1-2 เปิด digitalWrite(y1g, LOW); digitalWrite(y1y, HIGH); digitalWrite(y2g, LOW); digitalWrite(y2y, HIGH); delay(1000); // Wait for 1000 millisecond(s) //กระพริบ แยก 1-2 ปิด digitalWrite(y1y, LOW); digitalWrite(y2y, LOW); delay(1000); // Wait for 1000 millisecond(s) //กระพริบ แยก 1-2 digitalWrite(y1y, HIGH); digitalWrite(y2y, HIGH); delay(1000); // Wait for 1000 millisecond(s) //กระพริบ แยก 1-2 digitalWrite(y1y, LOW); digitalWrite(y2y, LOW); delay(1000); // Wait for 1000 millisecond(s) //เหลืออะไรอีกน้อ //ไฟแดง แยก 1-2 ไฟเขียวแยก 3-4 //ไฟกระพริบ แยก 3-4 }