2011年5月27日 星期五

Arduino 的提升電阻

我們在「Arduino 筆記 - Lab2 使用按鍵控制 LED 燈號」一文中學過如何用按鍵 (PushButton) 控制 LED 的開關,線路接法為:

image 

其中,按鍵的一支腳接到 +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 腳位都內建提升電阻,內建的提升電阻可以透過底下的方法打開:

image

使用內建的提升電阻,線路接法會比較簡單,因為只要把按鍵的一支接腳接到 pin 2,而另一支接腳接到 GND 就行了,不用額外接一顆 10 K 電阻。

改用提升電阻後,程式也要跟著稍做調整,像這樣:

要特別注意,因為現在按鍵未按下時電壓是 HIGH,而當按鍵按下是電壓是 LOW,按鍵的邏輯變成低態動作 (Active-LOW),所以判斷按鍵有沒被按下的邏輯要反過來,當狀態為 LOW 時才代表按鍵被按下。

使用提升電阻,按鍵是低態動作 (Active-LOW),而原先使用外部 10 K 電阻的按鍵線路則稱為高態動作 (Active-HIGH)。你可以把外部的 10 K 電阻稱作下拉電阻 (pull-down resistor)。

延伸閱讀

0 意見: