Arduino数字引脚作为GPIO的使用
引腳與GPIO的關系
引腳(pin)是對芯片的外部物理接口的一個稱呼,它是在不把這個物理接口投入到具體應用場合下的稱呼。例如,我們可以說,某某芯片的P1.5引腳可以作為數字輸出驅動外部數字設備,也可以作為串口接受引腳接受串口數據。那么P1.5就是一個引腳(pin),而作為數字輸出,UART的RX就是這個引腳的2個功能。
所以我們可以發現:
1、大多數MCU的引腳都不止一個功能。不同引腳內部結構不一樣,擁有的功能也不一樣。通過不同的配置,切換引腳的實際功能。
2、不是所有的引腳都能在程序中使用,比如芯片的Vcc和GND,除了供電,就沒做其他的用處。
?
數字引腳函數
pinMode(pin, mode)
作用:設置一個引腳(pin)作為GPIO時的I/O模式。
參數:
??? pin:引腳編號
??? mode:GPIO的I/O模式,取值有3種
??????????? INPUT :作為數字輸入
??????????? OUTPUT :作為數字輸出
??????????? INPUT_PULLUP:作為數字輸入,且使能引腳的內部上拉電阻
Arduino的引腳,在上電時默認就是輸入模式,但最好使用pinMode設置,更加明確。
當配置引腳為數字輸入模式時,引腳表現為高阻抗狀態,引腳內部的電流非常小,就如同在引腳前接了一個100M歐姆的電阻一樣。這也意味外部轉換引腳的電平只需很小的電流輸入即可。
當使用INPUT模式時,引腳作為數字輸入,但是不連接任何的拉電阻,處于懸空轉態,容易受電子噪聲干擾而隨機的改變其電平狀態。一般來說,當引腳作為數字輸入使用時,都讓引腳連接一個拉電阻:上拉電阻(引腳電平拉高到+5V或者+3.3V)或者下拉電阻(引腳電平拉低到GND)。可以使用Arduino引腳內部的上拉電阻(絕大多數AVR芯片為20K~50K,而Due則是50K~150K,具體參考MCU的數據手冊),或者自己外接拉電阻,外接拉電阻阻值一般使用10K的。
關于上拉和下拉電阻,可以參考-->上拉電阻和下拉電阻
當使用INPUT_PULLUP模式時,引腳作為數字輸入,且使能內部上拉電阻。13號引腳不建議作為數字輸入引腳使用。因為13腳默認連接了一個板載的LED燈,即便是你使能了上拉電阻,LED的電阻會拉低電壓,使得引腳依然是低電平。如果你非要使用13作為輸入,那就外置拉電阻。
當使用OUTPUT模式時,引腳作為數字輸出,引腳表現為低阻抗,輸出的電流大,高達40mA,足夠驅動一些基本的設備,如LED小燈。但不足以驅動馬達等對電流要求很高的元件。
注:
1、引腳作為PWM輸出時,無需先前使用pinMode配置其模式,因為PWM本身就代表了輸出的意思。且官方庫源代碼中可以發現,它已經幫我們配置為輸出了。
?
2、模擬引腳也可以作為數字引腳使用,完全OK。這在數字引腳不夠用的情況下非常有用。
使用如下宏函數將一個模擬引腳編號映射到數字引腳編號上去,以便數字函數能識別。這個函數是Arduino內置的,無需包含頭文件。
#define analogInputToDigitalPin(p) ((p < 6) ? (p) + 14 : -1)下面是示例代碼
//使用模擬引腳A0作為數字輸出驅動LED小燈,Blink程序。 int LEDpin = analogInputToDigitalPin(A0);void setup() {pinMode(LEDpin, OUTPUT);digitalWrite(LEDpin, LOW); }void loop() {digitalWrite(LEDpin, HIGH);delay(200);digitalWrite(LEDpin, LOW);delay(200);}?
digitalWrite(pin,value)
作用:設置一個數字輸出引腳的輸出電平值,HIGH或者LOW。
參數:
?????? pin:引腳編號。此引腳必須在之前使用pinMode設置為OUTPUT模式。
?????? value:2個值
?????? ? ? ?? LOW:輸出低電平
?????? ? ? ?? HIGH:輸出高電平
int digitalRead(pin)
作用:讀取一個數字輸入引腳的電平值。
返回:HIGH(高電平)或者LOW(低電平)。
參數:
??????? pin:引腳編號。
?
總結
以上是生活随笔為你收集整理的Arduino数字引脚作为GPIO的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows 8 应用开发 - 应用栏
- 下一篇: Latex 算法过长 分页显示方法