Arduino:簡易行人穿越道號誌控制器
A Simple Pedestrian Crossing Safety System Using Arduino
先前的一篇文章—簡易行人穿越道號誌控制電路,是採硬體的方式設計出來的電路。本篇文章則是介紹以微控器靭體的方式撰寫程式來完成此簡單系統。
功能
平時路口閃黃燈,但當行人要安全地穿越車道,行人可按下「通行」按鈕,讓路口原本閃爍的黃燈熄滅,且另外的紅燈變亮,讓看到紅燈亮的車輛停下來等待行人通過。當行人穿越車道後,按下「回復」按鈕,則紅燈變熄滅,黃燈恢復閃爍。
電路接線圖
程式碼
const int yellowLED = 9; /* 黃色 LED */
const int crossingBtn = 6; /* 通行按鈕 */
const int restoreBtn = 7; /* 復原按鈕 */
const int redLED = 8; /* 紅色 LED */
bool crossingBtn_pressed = false; /* 通行按鈕狀態旗標 */
bool restoreBtn_pressed = false; /* 回復按鈕狀態旗標 */
void pulseOutput(); /* 輸出脈波函數 */
void setup() {
pinMode(crossingBtn, INPUT);
pinMode(restoreBtn, INPUT);
pinMode(yellowLED, OUTPUT);
pinMode(redLED, OUTPUT);
}
void loop() {
if (!digitalRead(crossingBtn)){ /* 若通行按鈕按下 */
crossingBtn_pressed = true; /* 通行按鈕狀態標註為已按下 */
restoreBtn_pressed = false; /* 回復按鈕狀態標註為未按下 */
}
if (!digitalRead(restoreBtn)){ /* 若回復按鈕按下 */
restoreBtn_pressed = true; /* 回復按鈕狀態標註為已按下 */
crossingBtn_pressed = false; /* 通行按鈕狀態標註為未按下 */
}
/* 若 (通行按鈕與回復按鈕均未按下) 或 (回復按鈕按下) */
if ((!crossingBtn_pressed && !restoreBtn_pressed) || restoreBtn_pressed){
digitalWrite(redLED, 1); /* 紅色 LED 熄滅 */
pulseOutput(); /* 黃色 LED 閃爍 */
}
else if (crossingBtn_pressed) /* 若通行按鈕按下 */
digitalWrite(redLED, 0); /* 紅色 LED 亮 */
}
void pulseOutput(){
digitalWrite(yellowLED, 0); /* 黃色 LED 亮 */
delay(500); /* 延遲 0.5 秒 */
digitalWrite(yellowLED, 1); /* 黃色 LED 熄 */
delay(500);
}
眞趣盎然集相關文章

留言
張貼留言