常數定義 (constants)

常數在 86Duino 語言中是預先被定義好的變數,它們讓程式碼變得更容易閱讀。

定義邏輯上的 true 和 false (布林常數)

86Duino 語言中有兩個常數用來表示 “真” 或 “假”:true 以及 false

false

在兩者之中,false 較容易定義,它只要被定義為 0 即可。

true

通常 true 會被定義為 1 以表示 “真”,但事實上 true 擁有許多廣泛的定義,任意一個非零的整數都可以為 true,所以 -1、2、-200,在布林邏輯上都會被定義為 true。

注意 truefalse 是小寫的,而不像 HIGH、LOW、INPUT、OUTPUT。

定義 pin 腳狀態上的 HIGH 和 LOW

當讀取或者寫入GPIO pin 腳時只有兩種設定值:HIGHLOW

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 腳可以設定為 INPUTINPUT_PULLUPOUTPUT 三種模式,它可以靠 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.