我們在「Arduino 筆記 - Lab2 使用按鍵控制 LED 燈號」一文中學過如何用按鍵 (PushButton) 控制 LED 的開關,線路接法為:
其中,按鍵的一支腳接到 +5V,而另一支腳接 pin2 並且接一個 10K 電阻連到 GND。
程式碼如下:
利用 digitalRead() 檢查按鈕的狀態,當按鍵未按下時,10 K 電阻會把電壓拉到 LOW,而當按鍵按下時,+5V 會連到 pin 2,所以 pin 2 的狀態就會是 HIGH。
其實我們也可以省略這個 10K 電阻,讓線路變簡單一點,方法是利用 Arduino 內部的提升電阻。
提升電阻 (Pull-up resistor)
包括 digitial 和 analong pins,Arduino 所有 I/O 腳位都內建提升電阻,內建的提升電阻可以透過底下的方法打開:
使用內建的提升電阻,線路接法會比較簡單,因為只要把按鍵的一支接腳接到 pin 2,而另一支接腳接到 GND 就行了,不用額外接一顆 10 K 電阻。
改用提升電阻後,程式也要跟著稍做調整,像這樣:
要特別注意,因為現在按鍵未按下時電壓是 HIGH,而當按鍵按下是電壓是 LOW,按鍵的邏輯變成低態動作 (Active-LOW),所以判斷按鍵有沒被按下的邏輯要反過來,當狀態為 LOW 時才代表按鍵被按下。
使用提升電阻,按鍵是低態動作 (Active-LOW),而原先使用外部 10 K 電阻的按鍵線路則稱為高態動作 (Active-HIGH)。你可以把外部的 10 K 電阻稱作下拉電阻 (pull-down resistor)。
0 意見:
張貼留言