相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

數(shù)字I/O的使用數(shù)字信號(hào)
發(fā)布時(shí)間:2022-03-10 09:29 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 2676
Arduino UNO上每一個(gè)帶有數(shù)字編號(hào)的引腳,都是數(shù)字引腳,包括寫有“A”編號(hào)的模擬輸入引腳。使用這些引腳,可以完成輸入輸出數(shù)字信號(hào)的功能。


數(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ù)配置引腳的模式為輸入模式或輸出模式。
  1. pinMode(pin, mode);
復(fù)制代碼


參數(shù)pin為指定配置的引腳編號(hào);參數(shù)mode為指定的配置模式。
可使用的三種模式:
INPUT        輸入模式
OUTPUT        輸出模式
INPUT_PULLUP        輸入上拉模式

如之前我們?cè)贐link程序中使用到了pinMode(13, OUTPUT),即是把13號(hào)引腳配置為輸出模式。
配置成輸出模式后,你還需要使用digitalWrite() 讓其輸出高電平或者是低電平。其調(diào)用形式為:
  1. digitalWrite(pin, value);
復(fù)制代碼


參數(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)用形式為:
  1. int value = digitalRead(pin);
復(fù)制代碼

參數(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ù)字替代這些定義。如:
  1. pinMode(13,1);
  2. digitalWrite(13,1)
復(fù)制代碼

此處僅作說明,并不推薦這樣寫代碼,因?yàn)檫@樣會(huì)降低程序的可讀性。

我們?cè)倩氐阶畛醯腂link程序,在Arduino IDE菜單>文件>示例>01.Basics>Blink 找到它。程序如下:


  1.   Blink
  2. 等待一秒鐘,點(diǎn)亮LED,再等待一秒鐘,熄滅LED,如此循環(huán)
  3. */

  4. // 在大多數(shù)Arduino控制板上 13號(hào)引腳都連接了一個(gè)標(biāo)有“L”的LED燈
  5. // 給13號(hào)引腳連接的設(shè)備設(shè)置一個(gè)別名“l(fā)ed”
  6. int led = 13;

  7. // 在板子啟動(dòng)或者復(fù)位重啟后, setup部分的程序只會(huì)運(yùn)行一次
  8. void setup(){
  9.   // 將“l(fā)ed”引腳設(shè)置為輸出狀態(tài)
  10.   pinMode(led, OUTPUT);     
  11. }

  12. // setup部分程序運(yùn)行完后,loop部分的程序會(huì)不斷重復(fù)運(yùn)行
  13. void loop()
  14. {
  15.   digitalWrite(led, HIGH);   // 點(diǎn)亮LED
  16.   delay(1000);           // 等待一秒鐘
  17.   digitalWrite(led, LOW);   // 通過將引腳電平拉低,關(guān)閉LED
  18.   delay(1000);           // 等待一秒鐘
  19. }
復(fù)制代碼


在Blink中,我們通過新建變量的方法
  1. int led = 13;
復(fù)制代碼

為13腳連接的設(shè)備設(shè)置了一個(gè)變量名“l(fā)ed”,在此后的程序中,使用“l(fā)ed”則可代表對(duì)應(yīng)編號(hào)的引腳(或者是該引腳上連接的設(shè)備)。這種寫法可以提高程序的可讀性,并且方便修改,如設(shè)備需要更換連接引腳,直接修改該變量對(duì)應(yīng)的數(shù)值即可。
也可以使用如下語(yǔ)句:
  1. #define LED 13
復(fù)制代碼

以宏定義的方式,來為設(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è)熄滅的流水燈效果。
Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購(gòu)買
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國(guó)的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138484人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫 程序開發(fā) 網(wǎng)頁(yè)設(shè)計(jì) 會(huì)計(jì)課程 興趣成長(zhǎng) AIGC