愛伊米

Arduino--語法09

第三章函式部分

十五、數字I/O

15。1pinMode()

描述:

將指定的引腳配置成輸出或輸入。詳情請見digitalpins。

語法:

pin Mode(pin, mode)

引數:

pin:要設定模式的引腳

mode:INPUT或OUTPUT

返回

注意:模擬輸入腳也能當做數字腳使用,參見A0,A1等

15.2 digital Write()

描述:

給一個數字引腳寫入HIGH或者LOW。

如果一個引腳已經使用pin Mode() 配置為OUTPUT模式, 其電壓將被設定為相應的值, HIGH為5V(3。3V控制板上為3。3V) , LOW為0V。

如果引腳配置為INPUT模式, 使用digital Write() 寫入HIGH值, 將使內部20K上拉電阻(詳見數字引腳教程) 。寫入LOW將會禁用上拉。上拉電阻可以點亮一個LED讓其微微亮, 如果LED工作, 但是亮度很低, 可能是因為這個原因引起的。補救的辦法是使用pin Mode() 函式設定為輸出引腳。

注意:數字13號引腳難以作為數字輸入使用, 因為大部分的控制板上使用了一顆LED與一個電阻連線到他。如果啟動了內部的20K上拉電阻,他的電壓將在1。7V左右,而不是正常的5V,因為板載LED串聯的電阻把他使他降了下來, 這意味著他返回的值總是LOW。如果必須使用數字13號引腳的輸入模式,需要使用外部上拉下拉電阻。

語法

digital Write(pin, value)

引數:

pin:引腳編號(如1, 5, 10, A 0, A 3)

value:HIGH or LOW

返回

13號埠設定為高電平,延遲一秒,然後設定為低電平。

註釋:模擬引腳也可以當做數字引腳使用,使用方法是輸入埠AO,A1,A2等。

15.3 digital Read()

描述:

讀取指定引腳的值, HIGH或LOW。

語法:

digital Read(PIN)

引數:

pin:你想讀取的引腳號(int)

返回

HIGH或LOW

十六、模擬I/0

16.1 analog Reference()

描述:

配置用於模擬輸入的基準電壓(即輸入範圍的最大值)。選項有:

DEFAULT:

預設5V(Arduino板為5V) 或3。3伏特(Arduino板為3。3V) 為基準電壓。

INTERNAL:

在AT mega 168和AT mega 328上以1。1V為基準電壓, 以及在AT mega 8上以2。56V為基準電壓(Arduino Mega無此選項)

INTERNAL 1V 1

:以1。1V為基準電壓(此選項僅針對Arduino Mega)

INTERNAL 2V 56

:以2。56V為基準電壓(此選項僅針對Arduino Mega)

EXTERNAL

:以ARE F引腳(0至5V) 的電壓作為基準電壓。

引數:

type:使用哪種參考型別(DEFAULT,INTERNAL,INTERNAL 1V 1,INTERNAL 2V 56,或者EXTERNAL)

返回

注意事項:

改變基準電壓後, 之前從analog Read() 讀取的資料可能不準確。

警告:

不要在ARE F引腳上使用使用任何小於0V或超過5V的外部電壓。如果你使用ARE F引腳上的電壓作為基準電壓, 你在呼叫analog Read() 前必須設定參考型別為EXTERNAL。否則, 你將會削短有效的基準電壓(內部產生) 和ARE F引腳, 這可能會損壞您Arduino板上的微控制器。

另外, 您可以在外部基準電壓和ARE F引腳之間連線一個5K電阻, 使你可以在外部和內部基準電壓之間切換。請注意, 總阻值將會發生改變, 因為ARE F引腳內部有一個32K電阻。這兩個電阻都有分壓作用。所以, 例如, 如果輸入2。5V的電壓, 最終在在ARE F引腳上的電壓將為2。5*32/(32+5)=2。2V。

16.2 analog Read()

描述:

從指定的模擬引腳讀取資料值。Arduino板包含一個6通道(Mini和Nano有8個通道, Mega有16個通道),10位模擬數字轉換器。這意味著它將0至5伏特之間的輸入電壓對映到0至1023之間的整數值。這將產生讀數之間的關係:5伏特/1024單位,或0。0049伏特(4。9mV)每單位。輸入範圍和精度可以使用analog Reference() 改變。它需要大約100微秒(0。0001)來讀取模擬輸入,所以最大的閱讀速度是每秒10000次。

語法:

analog Read(PIN)

數值的讀取:

引腳:從輸入引腳(大部分板子從0到5, Mini和Nano從0到7, Mega從0到15) 讀取數值

返回

從0到1023的整數值

注意事項:

如果模擬輸入引腳沒有連入電路, 由analog Read() 返回的值將根據多項因素(例如其他模擬輸入引腳,你的手靠近板子等)產生波動。

16.3 analog Write()  PWM

描述:

從一個引腳輸出模擬值(PWM) 。可用於讓LED以不同的亮度點亮或驅動電機以不同的速度旋轉。analog Write() 輸出結束後, 該引腳將產生一個穩定的特殊佔空比方波, 直到下次呼叫analog Write() (或在同一引腳呼叫digital Read() 或digital Write() ) 。PWM訊號的頻率大約是490赫茲。

在大多數arduino板(AT mega 168或AT mega 328) , 只有引腳3, 5, 6, 9, 10和11可以實現該功能。在adu in oMega上, 引腳2到13可以實現該功能。老的Arduino板(AT mega 8) 的只有引腳9、10、11可以使用analog Write() 。在使用analog Write() 前, 你不需要呼叫pin Mode() 來設定引腳為輸出引腳。analog Write函式與模擬引腳、analog Read函式沒有直接關係。

語法:

analog Write(pin, value)

引數:

pin:用於輸入數值的引腳。

value:佔空比:0(完全關閉) 到255(完全開啟) 之間。

返回

說明和已知問題:

引腳5和6的PWM輸出將高於預期的佔空比(輸出的數值偏高) 。這是因為millis() 和delay()功能, 和PWM輸出共享相同的內部定時器。這將導致大多時候處於低佔空比狀態(如:0-10) ,並可能導致在數值為0時,沒有完全關閉引腳5和6。

十七、高階I/0

17.1  tone()

描述:

在一個引腳上產生一個特定頻率的方波(50%佔空比)。持續時間可以設定,否則波形會一直產生直到呼叫noTone() 函式。該引腳可以連線壓電蜂鳴器或其他喇叭播放聲音。

在同一時刻只能產生一個聲音。如果一個引腳已經在播放音樂, 那呼叫tone() 將不會有任何效果。如果音樂在同一個引腳上播放,它會自動調整頻率。使用tone() 函式會與3腳和11腳的PWM產生干擾(Mega板除外) 。

注意:

如果你要在多個引腳上產生不同的音調, 你要在對下一個引腳使用tone() 函式前對此引腳呼叫noTone() 函式。

語法:

tone(pin,frequency)

tone(pin,frequency,duration)

引數:

pin:要產生聲音的引腳

frequency:產生聲音的頻率, 單位Hz, 型別unsigned int

duration:聲音持續的時間, 單位毫秒(可選) , 型別unsigned long

17.2 noTone()

描述:

停止由tone() 產生的方波。如果沒有使用tone() 將不會有效果。

注意:如果你想在多個引腳上產生不同的聲音, 你要在對下個引腳使用tone() 前對剛才的引腳呼叫noTone() 。

語法:

noTone(pin)

引數:

pin:所要停止產生聲音的引腳

17.3 shiftOut()

描述:

將一個數據的一個位元組一位一位的移出。從最高有效位(最左邊)或最低有效位(最右邊)開始。依次向資料腳寫入每一位,之後時鐘腳被拉高或拉低,指示剛才的資料有效。

注意:如果你所連線的裝置時鐘型別為上升沿, 你要確定在呼叫shift Out() 前時鐘腳為低電平, 如呼叫digitalWrite(clockPin,LOW)。

注意:這是一個軟體實現;Arduino提供了一個硬體實現的SPI庫, 它速度更快但只在特定腳有效。

語法:

shiftOut(dataPin,clockPin,bitOrder,value)

引數:

dataPin:輸出每一位資料的引腳(int)

clockPin:時鐘腳, 當data Pin有值時此引腳電平變化(int)

bitOrder:輸出位的順序, 最高位優先或最低位優先

value:要移位輸出的資料(byte)

返回

17.4 shiftIn()

描述:

將一個數據的一個位元組一位一位的移入。從最高有效位(最左邊)或最低有效位(最右邊)開始。對於每個位,先拉高時鐘電平,再從資料傳輸線中讀取一位,再將時鐘線拉低。

注意:這是一個軟體實現;Arduino提供了一個硬體實現的SPI庫, 它速度更快但只在特定腳有效。

語法:

shift In(data Pin, clock Pin, bit Order)

引數:

data Pin:輸出每一位資料的引腳(int)

clock Pin:時鐘腳, 當data Pin有值時此引腳電平變化(int)

bit Order:輸出位的順序, 最高位優先或最低位優先

17.5 pulse In()

描述:

讀取一個引腳的脈衝(HIGH或LOW) 。例如, 如果value是HIGH, pulse In() 會等待引腳變為HIGH, 開始計時, 再等待引腳變為LOW並停止計時。返回脈衝的長度, 單位微秒。如果在指定的時間內無脈衝函式返回。

此函式的計時功能由經驗決定,長時間的脈衝計時可能會出錯。計時範圍從10微秒至3分鐘。(1秒=1000毫秒=1000000微秒)

語法:

pulse In(pin, value)

pulse In(pin, value, timeout)

引數:

pin:你要進行脈衝計時的引腳號(int)。

value:要讀取的脈衝型別, HIGH或LOW(int)。

timeout(可選) :指定脈衝計數的等待時間, 單位為微秒, 預設值是1秒(unsigned long)

返回

脈衝長度(微秒) , 如果等待超時返回0(unsigned long)