加入星計(jì)劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴(kuò)散
  • 作品版權(quán)保護(hù)
  • 300W+ 專(zhuān)業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長(zhǎng)期合作伙伴
立即加入
  • 正文
    • 一、Arduino項(xiàng)目最基本的函數(shù)
    • 二、Arduino常用的功能函數(shù)
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

esp8266開(kāi)發(fā)入門(mén)教程(基于Arduino)——編程基礎(chǔ)介紹

10/25 16:14
2307
閱讀需 11 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

很多剛接觸Arduino的同學(xué)可能不太清楚Arduino的編程方法和代碼運(yùn)行的流程,所以這一講我簡(jiǎn)單介紹一下。Arduino為了降低編程的難度把很多常用的函數(shù)都做了封裝,很多常用的一些傳感器和外設(shè)也有相關(guān)的類(lèi)庫(kù),而且除了官方的庫(kù),也有很多第三方的庫(kù)可用,開(kāi)發(fā)者只需要根據(jù)自己的實(shí)際需要添加庫(kù)調(diào)用API即可,這對(duì)于項(xiàng)目初期驗(yàn)證方案來(lái)說(shuō)很方便。

一、Arduino項(xiàng)目最基本的函數(shù)

不管是什么程序,都會(huì)有一個(gè)程序的入口,比如傳統(tǒng)C/C++程序,它的入口就是main函數(shù),但是在Arduino項(xiàng)目中我們并沒(méi)有看到這個(gè)函數(shù),那Arduino的程序是從哪里開(kāi)始運(yùn)行的呢?

實(shí)際上Arduino的程序入口也是main函數(shù),只不過(guò)它是封裝在Arduino核心庫(kù)中的,我們看不到而已,為了簡(jiǎn)化開(kāi)發(fā)的流程,Arduino只給出了setup() 函數(shù)和loop()函數(shù),而這兩個(gè)函數(shù)實(shí)際上是在main函數(shù)里面被調(diào)用執(zhí)行的。下面我們來(lái)具體講解一下這兩個(gè)函數(shù)的作用。

1、setup() 函數(shù)

Arduino控制器通電或復(fù)位后,即會(huì)開(kāi)始執(zhí)行setup() 函數(shù)中的程序,該部分只會(huì)執(zhí)行一次。

通常我們會(huì)在setup() 函數(shù)中完成Arduino的初始化設(shè)置,如配置I/O口狀態(tài),初始化串口等操作。

2、loop()函數(shù)

在setup() 函數(shù)中的程序執(zhí)行完后,Arduino會(huì)接著執(zhí)行l(wèi)oop() 函數(shù)中的程序。而loop()函數(shù)是一個(gè)死循環(huán),其中的程序會(huì)不斷的重復(fù)運(yùn)行。

通常我們會(huì)在loop() 函數(shù)中完成程序的主要功能,如驅(qū)動(dòng)各種模塊,采集數(shù)據(jù)等。

二、Arduino常用的功能函數(shù)

1、GPIO

1)在使用輸入或輸出功能前,需要先通過(guò)pinMode() 函數(shù)配置引腳的模式為輸入模式或輸出模式。

pinMode(pin, mode)
參數(shù) 說(shuō)明
pin 指定配置的引腳編號(hào)
mode 指定的配置模式。通??捎媚J接腥N, INPUT:輸入模式,OUTPUT:輸出模式,INPUT_PULLUP :輸入上拉模式

2)讓某個(gè)引腳輸出高電平或者是低電平。

digitalWrite(pin, value)
參數(shù) 說(shuō)明
pin 指定配置的引腳編號(hào)
value 指定輸出的電平。HIGH:輸出高電平,LOW:輸出低電平

3)讀取某個(gè)引腳的電平狀態(tài),返回值為獲取到的信號(hào)狀態(tài),1為高電平,0為低電平。

digitalRead(pin)
參數(shù) 說(shuō)明
pin 指定配置的引腳編號(hào)

2、外部中斷

1)對(duì)中斷引腳進(jìn)行初始化配置,以開(kāi)啟Arduino的外部中斷功能。

attachInterrupt(pin, ISR, mode)
參數(shù) 說(shuō)明
pin 指定配置的引腳編號(hào)
ISR 中斷服務(wù)函數(shù)名,該函數(shù)由用戶自己定義
mode 中斷模式,HIGH:上升沿觸發(fā)、LOW:下降沿觸發(fā)

示例:

attachInterrupt(2, Hello, LOW); 該語(yǔ)句會(huì)開(kāi)啟Arduino Uno的 2號(hào)引腳(中斷編號(hào)0)的外部中斷功能,并指定下降沿時(shí)觸發(fā)該中斷。Hello() 函數(shù)是自己定義的一個(gè)函數(shù),函數(shù)里面執(zhí)行什么也是根據(jù)自己的需要來(lái)寫(xiě)。

當(dāng)2號(hào)引腳上電平由高變低后,該中斷會(huì)被觸發(fā),Arduino即會(huì)運(yùn)行Hello() 函數(shù)中的語(yǔ)句。

2)中斷分離函數(shù),可以對(duì)已經(jīng)配置了中斷的引腳關(guān)閉中斷功能。

detachInterrupt(pin)
參數(shù) 說(shuō)明
pin 指定配置的引腳編號(hào)

3、時(shí)鐘相關(guān)

1)獲取Arduino通電后(或復(fù)位后)到現(xiàn)在的時(shí)間。返回值為系統(tǒng)運(yùn)行時(shí)間,單位毫秒ms。

millis()

2)獲取Arduino通電后(或復(fù)位后)到現(xiàn)在的時(shí)間。返回值為系統(tǒng)運(yùn)行時(shí)間,單位微秒us。

micros()

3)毫秒級(jí)延時(shí)。

delay(ms)
參數(shù) 說(shuō)明
ms 延時(shí)時(shí)間,類(lèi)型unsigned long

4)微秒級(jí)延時(shí)。

delayMicroseconds(us)
參數(shù) 說(shuō)明
us 延時(shí)時(shí)間,類(lèi)型unsigned int

4、串口

1)使用串口與計(jì)算機(jī)通信,需要先使用Serial.begin() 初始化Arduino的串口通信功能。

Serial.begin(speed, config)
參數(shù) 說(shuō)明
speed 串口通信波特率,常用波特率:300、600、1200、2400、4800、9600、14400、19200、28800、38400、57600、115200
config 數(shù)據(jù)位、校驗(yàn)位、停止位配置(也可以不配置)
config可選配置 數(shù)據(jù)位 校驗(yàn)位 停止位
SERIAL_5N1 5 無(wú) 1
SERIAL_6N1 6 無(wú) 1
SERIAL_7N1 7 無(wú) 1
SERIAL_8N1(默認(rèn)配置) 8 無(wú) 1
SERIAL_5N2 5 無(wú) 2
SERIAL_6N2 6 無(wú) 2
SERIAL_7N2 7 無(wú) 2
SERIAL_8N2 8 無(wú) 2
SERIAL_5E1 5 1
SERIAL_6E1 6 1
SERIAL_7E1 7 1
SERIAL_8E1 8 1
SERIAL_5E2 5 2
SERIAL_6E2 6 2
SERIAL_7E2 7 2
SERIAL_8E2 8 2
SERIAL_5O1 5 1
SERIAL_6O1 6 1
SERIAL_7O1 7 1
SERIAL_8O1 8 1
SERIAL_5O2 5 2
SERIAL_6O2 6 2
SERIAL_7O2 7 2
SERIAL_8O2 8 2

例如:Serial.begin(9600, SERIAL_8E2) 是將串口波特率設(shè)為9600,數(shù)據(jù)位8,偶校驗(yàn),停止位2。

提示:Serial.begin函數(shù)也可以只配置波特率,如:Serial.begin(9600)

2)串口打印輸出。

Serial.print(val)
參數(shù) 說(shuō)明
val 要輸出的數(shù)據(jù),各種類(lèi)型的數(shù)據(jù)均可

3)在輸出完指定數(shù)據(jù)后,再輸出一組回車(chē)換行符。

Serial.println(val)
參數(shù) 說(shuō)明
val 要輸出的數(shù)據(jù),各種類(lèi)型的數(shù)據(jù)均可

4)接收串口數(shù)據(jù)。調(diào)用該語(yǔ)句,每次都會(huì)返回一個(gè)字節(jié)的數(shù)據(jù),這個(gè)返回值便是當(dāng)前串口讀取到的數(shù)據(jù)。

Serial.read()

提示:以上幾個(gè)是串口最常用最基礎(chǔ)的函數(shù),還有很多函數(shù)和用法這里沒(méi)有介紹,感興趣的同學(xué)可以自己去查閱。

5、PWM

1)PWM輸出功能。

在Arduino Uno中,提供PWM功能的引腳為3、5、6、9、10、11。

analogWrite(pin,value)
參數(shù) 說(shuō)明
pin 要讀取模擬值的引腳,被指定的引腳必須是模擬輸入引腳
value PWM的脈沖寬度,范圍為0~255

提示:在analogWrite() 函數(shù)內(nèi)部,已經(jīng)完成了引腳的初始化,因此不用在Setup() 函數(shù)中進(jìn)行初始化操作。

6、ADC

1)ADC輸入功能。

模擬輸入引腳是帶有ADC(Analog-to-Digital Converter,模數(shù)轉(zhuǎn)換器)功能的引腳。它可以將外部輸入的模擬信號(hào)轉(zhuǎn)換為芯片運(yùn)算時(shí)可以識(shí)別的數(shù)字信號(hào),從而實(shí)現(xiàn)讀入模擬值的功能。

Arduino Uno模擬輸入功能有10位精度,即可以將0~5V的電壓信號(hào)轉(zhuǎn)換為0~1023的整數(shù)形式表示。

analogRead(pin)
參數(shù) 說(shuō)明
pin 要讀取模擬值的引腳,被指定的引腳必須是模擬輸入引腳

提示:在analogRead() 函數(shù)內(nèi)部,已經(jīng)完成了引腳的初始化,因此不用在Setup() 函數(shù)中進(jìn)行初始化操作。

示例:analogRead(A0),即是讀取A0引腳上的模擬值。

三、結(jié)束語(yǔ)

好了,關(guān)于Arduino編程基礎(chǔ)的介紹就講到這里,常用的函數(shù)我這里只是列舉了一部分,需要用到其他函數(shù)的話你們自行查閱。如果還有什么問(wèn)題,歡迎在評(píng)論區(qū)留言。如果這篇文章能夠幫到你,就給我點(diǎn)個(gè)贊吧,如果想了解更多Arduino的內(nèi)容,可以關(guān)注一下博主,后續(xù)我還會(huì)繼續(xù)分享更多的經(jīng)驗(yàn)給大家。

相關(guān)推薦

電子產(chǎn)業(yè)圖譜