常數定義 (constants)
常數在 86Duino 語言中是預先被定義好的變數,它們讓程式碼變得更容易閱讀。
定義邏輯上的 true 和 false (布林常數)
86Duino 語言中有兩個常數用來表示 “真” 或 “假”:true
以及 false
false
在兩者之中,false 較容易定義,它只要被定義為 0 即可。
true
通常 true 會被定義為 1 以表示 “真”,但事實上 true 擁有許多廣泛的定義,任意一個非零的整數都可以為 true,所以 -1、2、-200,在布林邏輯上都會被定義為 true。
注意 true
或 false
是小寫的,而不像 HIGH、LOW、INPUT、OUTPUT。
定義 pin 腳狀態上的 HIGH 和 LOW
當讀取或者寫入GPIO pin 腳時只有兩種設定值:HIGH
與 LOW
。
HIGH
HIGH 對於一個 pin 腳的意義,會根據其設定為 INPUT 或 OUTPUT 模式而有所不同,如果 pin 腳被 pinMode()
設定為 INPUT 並且其上的電壓到達 2.5 伏特以上時,以 digitalRead()
讀取則會回傳 HIGH。
如果 pin 腳被 pinMode() 設定為 OUTPUT 並且以 digitalWrite()
將它設定為 HIGH,pin 腳會持續送出 3.3 伏特的電壓,在這個狀態下可以被當作電壓源;例如我們可以接上 LED 燈做為其電源供應,LED 負極則接上 GND 或是一個設定為 LOW 的 pin 腳。
LOW
LOW 對於一個 pin 腳的意義,會根據其設定為 INPUT 或 OUTPUT 模式而有所不同,如果 pin 腳被 pinMode()
設定為 INPUT 並且其上的電壓到達 0.8 伏特以下時,以 digitalRead()
讀取則會回傳 LOW。
如果 pin 腳被 pinMode() 設定為 OUTPUT 並且以 digitalWrite()
將它設定為 LOW,pin 腳上不會有電壓 (即 0 伏特),在這個狀態下可以被當作接地端;例如我們可以接上 LED 燈做為其接地 pin 腳,LED 正極則接上 5 伏特電壓或是一個設定為 HIGH 的 pin 腳。
定義 pin 腳模式上的 INPUT、INPUT_PULLUP、 OUTPUT
GPIO pin 腳可以設定為 INPUT
、INPUT_PULLUP
、 OUTPUT
三種模式,它可以靠 pinMode() 函式來改變 pin 腳的模式。
把 pin 腳設定成 INPUT
86Duino 的 pin 腳可以藉由 pinMode()
函式設定為 INPUT
,使 pin 腳呈現高阻抗的狀態;對一個可以採樣外部信號的電路來說,此狀態對外部信號的影響是極微小的,信號會先通過一個高阻抗電阻 (>>10mega 歐姆) 後才進入 pin 腳,所以很適合用來讀取外部感測器的信號。
如果你將 pin 腳設定為 INPUT,也想要讓它的電壓平常就在 GND 狀態的話,通常需要再外接一個 pull-down 電阻來完成,這部分在 Arduino 的 Digital Read Serial 使用手冊中有詳細介紹。
把 pin 腳設定成 INPUT_PULLUP
86Duino 的 CPU 有內建 pull-up 電阻(內部有一個連接至電源的 75k 歐姆電阻),如果你想要使用這些內部電阻,可以將 pinMode()
設定成 INPUT_PULLUP
;這可以有效的反轉外部信號所代表的意義:當讀到 HIGH 代表感測器關閉,LOW 代表感測器開啟。這部分的細節在 Arduino 的 Input Pullup Serial 相關範例中。
把 pin 腳設定成 OUTPUT
86Duino 的 pin 腳可以藉由 pinMode()
函式設定為 OUTPUT
,一個低阻抗的模式;這代表它可以提供大量的電流給其他的電路,86Duino 可為外部裝置提供(正電流)或吸收(負電流)達 16 毫安培,這對點亮 LED 燈是非常有用的,但對感測器讀取上較沒幫助;要注意的是:pin 腳為 OUTPUT 的模式下,若不小心將 5 伏特與 GND 短路,有可能會將此 pin 燒毀。另外,86Duino pin 所提供的電流量並不足以提供給馬達、繼電器或是一些需要較大電流才能驅動的裝置。
See also
- pinMode()
- Integer Constants
- boolean variables
本頁由熱血青年 LBU 譯自英文版。
The text of the 86Duino reference is a modification of the Arduino reference, and is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.