คำอธิบาย
ชุดทดลองควบคุมไฟจราจร ซีเควน Traffic Light Control/Sequencer เพื่อเรียนรู้การเขียนโปรแกรมควบคุมไฟจราจร / ซีเควนซ์ ด้วย Arduino อย่างง่าย
มีอะไรเตรียมไว้ให้ในชุด
- เสาไฟจราจร 2 เสา
- ติดตั้งบนแผ่นฐานรูป 4 แยก 21×30 cm
- บอร์ด Arduino UNO Compatible + สาย USB Download
- สายต่อวงจร Jumper Wire
- จุดเชื่อมต่อสายไฟ Bread Board
ตัวอย่างโปรแกรมการควบคุมไฟจราจร Arduino Traffic Lights 2 เลน + Switch ควบคุม
- เรียนรู้การ กำหนดเลน 1, 2 การตั้งเวลาไฟแดง ไฟเขียว
- ตั้งเวลากระพริบไฟเหลือง เรียนรู้การใช้ Switch ควบคุม
Arduino Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
// กำหนดไฟเลน 1 int RED1 = 2; // ขา Digital 1 เป็น ไฟแดงเลน 1 int YEL1 = 3; // ขา Digital 2 เป็น ไฟเหลืองเลน 1 int GRN1 = 4; // ขา Digital 3 เป็น ไฟเขียวเลน 1 // กำหนดไฟเลน 2 int RED2 = 5; // ขา Digital 4 เป็น ไฟแดงเลน 2 int YEL2 = 6; // ขา Digital 5 เป็น ไฟเหลืองเลน 2 int GRN2 = 7; // ขา Digital 6 เป็น ไฟเขียวเลน 2 int buttonState = 1; const int SW1 = 8; const int SW2 = 9; int State_Light = 0; void setup(){ pinMode(RED1, OUTPUT); pinMode(YEL1, OUTPUT); pinMode(GRN1, OUTPUT); pinMode(RED2, OUTPUT); pinMode(YEL2, OUTPUT); pinMode(GRN2, OUTPUT); digitalWrite(RED1, LOW); digitalWrite(YEL1, LOW); digitalWrite(GRN1, LOW); digitalWrite(RED2, LOW); digitalWrite(YEL2, LOW); digitalWrite(GRN2, LOW); pinMode(SW1, INPUT_PULLUP); pinMode(SW2, INPUT_PULLUP); Serial.begin(9600); } void loop(){ buttonState = digitalRead(8); if(buttonState == LOW) { State_Light = 1; } Serial.println(buttonState); buttonState = digitalRead(SW2); if(buttonState == LOW){ State_Light = 1; } switch (State_Light) { case 0: // your hand is on the sensor digitalWrite(RED1, LOW); digitalWrite(YEL1, LOW); digitalWrite(GRN1, HIGH); //ให้สัญญาณไฟเขียว เลน 1 digitalWrite(RED2, LOW); digitalWrite(YEL2, LOW); digitalWrite(GRN2, HIGH); //ให้สัญญาณไฟเขียว เลน 2 break; case 1: // your hand is close to the sensor for (int Count = 1; Count < 5; Count++){ digitalWrite(RED1, LOW); digitalWrite(YEL1, LOW); digitalWrite(GRN1, LOW); digitalWrite(RED2, LOW); digitalWrite(YEL2, LOW); digitalWrite(GRN2, LOW); delay (200); digitalWrite(RED1, LOW); digitalWrite(YEL1, HIGH); digitalWrite(GRN1, LOW); digitalWrite(RED2, LOW); digitalWrite(YEL2, HIGH); digitalWrite(GRN2, LOW); delay (200); } State_Light = 2; break; case 2: // your hand is a few inches from the sensor digitalWrite(RED1, HIGH); digitalWrite(YEL1, LOW); digitalWrite(GRN1, LOW); digitalWrite(RED2, HIGH); digitalWrite(YEL2, LOW); digitalWrite(GRN2, LOW); delay (3000); for (int Count = 1; Count < 5; Count++) { digitalWrite(RED1, LOW); digitalWrite(YEL1, LOW); digitalWrite(GRN1, LOW); digitalWrite(RED2, LOW); digitalWrite(YEL2, LOW); digitalWrite(GRN2, LOW); delay (200); digitalWrite(RED1, HIGH); digitalWrite(YEL1, LOW); digitalWrite(GRN1, LOW); digitalWrite(RED2, HIGH); digitalWrite(YEL2, LOW); digitalWrite(GRN2, LOW); delay (200); } State_Light = 3; break; case 3: // your hand is nowhere near the sensor digitalWrite(RED1, LOW); digitalWrite(YEL1, LOW); digitalWrite(GRN1, HIGH); digitalWrite(RED2, LOW); digitalWrite(YEL2, LOW); digitalWrite(GRN2, HIGH); delay (5000); State_Light = 0; break; } } |
รีวิว
ยังไม่มีบทวิจารณ์