數(shù)字信號(hào)
數(shù)字信號(hào)是以0、1表示的電平不連續(xù)變化的信號(hào),也就是以二進(jìn)制的形式表示的信號(hào)。 在Arduino中數(shù)字信號(hào)通過高低電平來表示,高電平則為數(shù)字信號(hào)1,低電平則為數(shù)字信號(hào)0 。
Arduino上每一個(gè)帶有數(shù)字編號(hào)的引腳,都是數(shù)字引腳,包括寫有“A”編號(hào)的模擬輸入引腳。使用這些引腳,可以完成輸入輸出數(shù)字信號(hào)的功能。
在使用輸入或輸出功能前,你需要先通過pinMode() 函數(shù)配置引腳的模式為輸入模式或輸出模式。
- pinMode(pin, mode);
參數(shù)pin為指定配置的引腳編號(hào);參數(shù)mode為指定的配置模式。
可使用的三種模式:
INPUT 輸入模式
OUTPUT 輸出模式
INPUT_PULLUP 輸入上拉模式
如之前我們?cè)贐link程序中使用到了pinMode(13, OUTPUT),即是把13號(hào)引腳配置為輸出模式。
配置成輸出模式后,你還需要使用digitalWrite() 讓其輸出高電平或者是低電平。其調(diào)用形式為:
- digitalWrite(pin, value);
參數(shù)pin為指定輸出的引腳編號(hào);參數(shù)value為你要指定輸出的電平,使用HIGH指定輸出高電平,或是使用LOW指定輸出低電平。
Arduino中輸出的低電平為0V,輸出的高電平為當(dāng)前Arduino的工作電壓。例如Arduino UNO的工作電壓為5V,其高電平輸出也是5V;Arduino Due工作電壓為3.3V,所以高電平輸出也就是3.3V。
數(shù)字引腳除了用于輸出信號(hào)外,還可以用digitalRead() 函數(shù)讀取外部輸入的數(shù)字信號(hào),其調(diào)用形式為:
- int value = digitalRead(pin);
參數(shù)pin為指定讀取狀態(tài)的引腳編號(hào);返回值value為獲取到的信號(hào)狀態(tài),1為高電平,0為低電平。
Arduino UNO會(huì)將大于3V的輸入電壓視為高電平識(shí)別,小于1.5V的電壓視為低電平識(shí)別。所以,即使輸入電壓不太準(zhǔn)確,Arduino UNO也可以正常識(shí)別。需要注意的是,超過5V的輸入電壓可能會(huì)損壞Arduino UNO。(不同型號(hào)的Arduino有所不同)
在Arduino核心庫(kù)中,OUTPUT被定義等于1,INPUT被定義等于0,HIGH被定義等于1,LOW被定義等于0。因此這里也可以用數(shù)字替代這些定義。如:
- pinMode(13,1);
- digitalWrite(13,1)
此處僅作說明,并不推薦這樣寫代碼,因?yàn)檫@樣會(huì)降低程序的可讀性。
我們?cè)倩氐阶畛醯腂link程序,在Arduino IDE菜單>文件>示例>01.Basics>Blink 找到它。程序如下:
- Blink
- 等待一秒鐘,點(diǎn)亮LED,再等待一秒鐘,熄滅LED,如此循環(huán)
- */
- // 在大多數(shù)Arduino控制板上 13號(hào)引腳都連接了一個(gè)標(biāo)有“L”的LED燈
- // 給13號(hào)引腳連接的設(shè)備設(shè)置一個(gè)別名“l(fā)ed”
- int led = 13;
- // 在板子啟動(dòng)或者復(fù)位重啟后, setup部分的程序只會(huì)運(yùn)行一次
- void setup(){
- // 將“l(fā)ed”引腳設(shè)置為輸出狀態(tài)
- pinMode(led, OUTPUT);
- }
- // setup部分程序運(yùn)行完后,loop部分的程序會(huì)不斷重復(fù)運(yùn)行
- void loop()
- {
- digitalWrite(led, HIGH); // 點(diǎn)亮LED
- delay(1000); // 等待一秒鐘
- digitalWrite(led, LOW); // 通過將引腳電平拉低,關(guān)閉LED
- delay(1000); // 等待一秒鐘
- }
在Blink中,我們通過新建變量的方法
- int led = 13;
為13腳連接的設(shè)備設(shè)置了一個(gè)變量名“l(fā)ed”,在此后的程序中,使用“l(fā)ed”則可代表對(duì)應(yīng)編號(hào)的引腳(或者是該引腳上連接的設(shè)備)。這種寫法可以提高程序的可讀性,并且方便修改,如設(shè)備需要更換連接引腳,直接修改該變量對(duì)應(yīng)的數(shù)值即可。
也可以使用如下語(yǔ)句:
- #define LED 13
以宏定義的方式,來為設(shè)備設(shè)置一個(gè)名稱。
delay() 為毫秒延時(shí)函數(shù),delay(1000) 即延時(shí)1秒(1000毫秒),在本程序中用來控制,開關(guān)LED的間隔時(shí)間。你可以自行修改其中的參數(shù),觀察實(shí)際運(yùn)行效果。
Blink是最簡(jiǎn)單的Arduino程序,在此基礎(chǔ)上,我們還可以制作控制多個(gè)LED,逐個(gè)點(diǎn)亮,逐個(gè)熄滅的流水燈效果。
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。