相關推薦
您可能對下面課程感興趣
Arduino視頻教程基礎篇

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

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


數(shù)字信號
數(shù)字信號是以0、1表示的電平不連續(xù)變化的信號,也就是以二進制的形式表示的信號。 在Arduino中數(shù)字信號通過高低電平來表示,高電平則為數(shù)字信號1,低電平則為數(shù)字信號0 。



Arduino上每一個帶有數(shù)字編號的引腳,都是數(shù)字引腳,包括寫有“A”編號的模擬輸入引腳。使用這些引腳,可以完成輸入輸出數(shù)字信號的功能。
在使用輸入或輸出功能前,你需要先通過pinMode() 函數(shù)配置引腳的模式為輸入模式或輸出模式。
  1. pinMode(pin, mode);
復制代碼


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

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


參數(shù)pin為指定輸出的引腳編號;參數(shù)value為你要指定輸出的電平,使用HIGH指定輸出高電平,或是使用LOW指定輸出低電平。

Arduino中輸出的低電平為0V,輸出的高電平為當前Arduino的工作電壓。例如Arduino UNO的工作電壓為5V,其高電平輸出也是5V;Arduino Due工作電壓為3.3V,所以高電平輸出也就是3.3V。

數(shù)字引腳除了用于輸出信號外,還可以用digitalRead() 函數(shù)讀取外部輸入的數(shù)字信號,其調(diào)用形式為:
  1. int value = digitalRead(pin);
復制代碼

參數(shù)pin為指定讀取狀態(tài)的引腳編號;返回值value為獲取到的信號狀態(tài),1為高電平,0為低電平。

Arduino UNO會將大于3V的輸入電壓視為高電平識別,小于1.5V的電壓視為低電平識別。所以,即使輸入電壓不太準確,Arduino UNO也可以正常識別。需要注意的是,超過5V的輸入電壓可能會損壞Arduino UNO。(不同型號的Arduino有所不同)

在Arduino核心庫中,OUTPUT被定義等于1,INPUT被定義等于0,HIGH被定義等于1,LOW被定義等于0。因此這里也可以用數(shù)字替代這些定義。如:
  1. pinMode(13,1);
  2. digitalWrite(13,1)
復制代碼

此處僅作說明,并不推薦這樣寫代碼,因為這樣會降低程序的可讀性。

我們再回到最初的Blink程序,在Arduino IDE菜單>文件>示例>01.Basics>Blink 找到它。程序如下:


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

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

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

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


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

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

以宏定義的方式,來為設備設置一個名稱。

delay() 為毫秒延時函數(shù),delay(1000) 即延時1秒(1000毫秒),在本程序中用來控制,開關LED的間隔時間。你可以自行修改其中的參數(shù),觀察實際運行效果。

Blink是最簡單的Arduino程序,在此基礎上,我們還可以制作控制多個LED,逐個點亮,逐個熄滅的流水燈效果。
Arduino視頻教程基礎篇
我要自學網(wǎng)商城 ¥40 元
進入購買
文章評論
0 條評論 按熱度排序 按時間排序 /350
添加表情
遵守中華人民共和國的各項道德法規(guī),
承擔因您的行為而導致的法律責任,
本站有權保留或刪除有爭議評論。
參與本評論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關推薦
您可能對下面課程感興趣
Arduino視頻教程基礎篇

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

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