日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Arduino基础语法

發(fā)布時(shí)間:2023/12/8 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Arduino基础语法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:只要有點(diǎn)C語言基礎(chǔ),學(xué)Arduino語法就不難,只是有點(diǎn)常量和數(shù)據(jù)類型以及函數(shù)跟C語言不大一樣,下面,我將向大家介紹一下Arduino的基礎(chǔ)語法。我用的是Arduino UNO的板子,Arduino UNO是Arduino USB接口系列的最新版本,成為Arduino平臺(tái)的參考標(biāo)準(zhǔn)模板。UNO的處理器核心是ATmega328,同時(shí)具有14路數(shù)字輸入/輸出(其中6路可作為PWM輸出),有6路模擬輸入,一個(gè)16MHZ晶體振蕩器,一個(gè)USB口,一個(gè)電源插座,一個(gè)ICSP header和一個(gè)復(fù)位按鈕。

一、Arduino中的常量

1.HIGH/LOW:表示數(shù)字I/O口的電平。HIGH表示高電平,LOW表示低電平
2.INPUT/OUTPUT:表示數(shù)字I/O口的方向。INPUT表示輸入,OUTPUT表示輸出。
3.true/false:true表示邏輯狀態(tài)真(1),false表示假(0)
4.integer constants:整型常量
5.floating point constants:浮點(diǎn)型常量

二、Arduino中的數(shù)據(jù)類型

數(shù)據(jù)類型字節(jié)范圍作用
void只用作函數(shù)聲明,表示沒有返回值
booleantrue,false每一個(gè)布爾變量占一個(gè)字節(jié)的內(nèi)存
char1-128~127字符
unsigend char10~255無符號(hào)字符
byte0~255-128~127字節(jié)。1byte=8bit(位)
int2-32768~32767整數(shù),在Arduino Due上是4個(gè)字節(jié)
unsigned int20~65535無符號(hào)整數(shù)
word20~65535
long4~2147483648~2147483647長整數(shù)
unsigned long40~2的32次方-1無符號(hào)長整數(shù)
short2-32768~32767短整數(shù)
float4-3.4028235E+38~3.4028235E+38單精度浮點(diǎn)數(shù),只有6~7位小數(shù)精度
double4雙精度浮點(diǎn)數(shù),在Arduino Due上為8個(gè)字節(jié),其余的跟float一樣
string字符串,相當(dāng)于char類型的數(shù)組
Stringobject
array數(shù)組

三、數(shù)據(jù)類型轉(zhuǎn)換函數(shù)

1.char():將任意類型的值轉(zhuǎn)換成char類型;
2.byte():將任意類型的值轉(zhuǎn)換成byte類型;
3.int():將任意類型的值轉(zhuǎn)換成int類型;
4.long():將任意類型的值轉(zhuǎn)換成long類型;
5.float():將任意類型的值轉(zhuǎn)換成float類型;

四、Arduino基本函數(shù)

數(shù)字I/O口

1.pinMode(pin,mode)
這是I/O輸入輸出模式定義函數(shù)。pin為對(duì)應(yīng)的引腳,mode表示INPUT或OUTPUT
例:pinMode(13,OUTPUT);//將腳位13設(shè)定為輸出模式
2.digitalWrite(pin,value)DEFAULT、
數(shù)字I/O口輸出電平定義函數(shù)。pin為0~13之間的一個(gè)值,代表對(duì)應(yīng)的引腳。value為HIGH或LOW
注:必須先利用pinMode(pin,mode)函數(shù)定義輸入或輸出模式后,digitalWrite及下面介紹的函數(shù)才能生效
例:digitalWrite(9,HIGH);//將腳位9設(shè)定輸出高電位
3.digitalRead(pin)
數(shù)字I/O口讀入電平函數(shù)。pin為0~13之間的一個(gè)值,代表對(duì)應(yīng)的引腳。該函數(shù)的返回值為int型,表示從引腳讀入的電壓是高電平或低電平。當(dāng)檢測到引腳為高電平時(shí)表示為HIGH,低電平時(shí)表示為LOW。
例:val=digitalRead(6);//讀出引腳6的值返回給變量val
上述這些函數(shù)都可以在Arduino開發(fā)環(huán)境目錄下的hardware\arduino\cores\arduino文件夾里的wiring_digital.c和其他c文件中查看到。

模擬I/O口

1.analogReference()
此函數(shù)的作用是配置模擬引腳的參考電壓。在嵌入式應(yīng)用中,引腳獲取模擬電壓值之后,將根據(jù)參考電壓的大小把模擬值轉(zhuǎn)換為0~1023之間的一個(gè)數(shù)。該函數(shù)為無返回值,參數(shù)有3種類型(DEFAULT/INTERNAL/EXTERNAL),具體含義為:
DEFAULT:默認(rèn)值,參考電壓為5V
INTERNAL:低電壓模式,使用片內(nèi)基準(zhǔn)電壓源
EXTERNAL:擴(kuò)展模式,通過AREF引腳獲取參考電壓
2.analogRead(pin)
模擬I/O口讀函數(shù),。讀出該引腳位的電壓源并回傳一個(gè)0到1023之間的數(shù)值表示相對(duì)應(yīng)的0到5的電壓值
例:val=analogRead(0);//讀出模擬量引腳的值并回傳給val
3.analogWrite(pin,value)
和函數(shù)analogRead(pin)相反,它是向模擬口pin引腳寫入一個(gè)數(shù)值,該函數(shù)值的大小為value

時(shí)間函數(shù)

1.millis()
返回時(shí)間函數(shù)(ms)。計(jì)算從程序開始執(zhí)行到目前的毫秒時(shí)間,函數(shù)返回值為unsigned long 型。最大計(jì)時(shí)時(shí)間約為9個(gè)多小時(shí)(之后數(shù)據(jù)將會(huì)溢出),數(shù)據(jù)溢出后從零重新開始計(jì)時(shí)
例:time=millis();//將程序到當(dāng)前為止的運(yùn)行時(shí)間返回給變量time
2.micros()
類似返回時(shí)間函數(shù)millis(),單位為微妙,大約需要70min溢出
3.delay(ms)
延時(shí)函數(shù)(單位為ms),暫停程序運(yùn)行一段時(shí)間
例:delay(500);//暫停半秒
4.delayMicroseconds(微秒)
延時(shí)函數(shù)(單位微妙),類似delay()

隨機(jī)數(shù)

1.randomSeed(seed) //函數(shù)用來設(shè)置隨機(jī)數(shù)種子
例:randomSeed(analogRead(5));//使用類比輸入當(dāng)作亂樹種子
2.long random(max)
3.long random(min,max)
回傳指定區(qū)間的亂數(shù),型態(tài)為long。如果沒有指定最小值,預(yù)設(shè)最小值為0
例:long randnum=random(0,100);//回傳0~99之間的數(shù)字
long randnum=random(11);//回傳0~10之間的數(shù)字

串口通信

1.Serial.begin(int speed) //初始化串口比特率函數(shù)
例:Serial.begin(9600);
2.Serial.available() //串口輸入數(shù)據(jù)讀取前的判斷函數(shù)
返回值為1時(shí)說明串口緩存(buff)中有數(shù)據(jù),返回值為0時(shí)說明串口buff中無數(shù)據(jù)或者數(shù)據(jù)已經(jīng)讀取出來過
例:if(Serial.available())
3.Serial.read() //從串口buff中讀取數(shù)據(jù)進(jìn)來
例:information=Serial.read();
4.Serial.flush() //清空串口buff中的數(shù)據(jù)
5.Serial.print(data) //把數(shù)據(jù)data從串口發(fā)送出去
(1)Serial.print(data) //把data對(duì)應(yīng)的字符串ASCII碼發(fā)送出去。
如:int data=79;
Serial.print(data);
串口發(fā)送出去的就是字符串"79"的ASCII
(2)Serial.print(data,DEC) //發(fā)送的是data的10進(jìn)制字符串
如:int data=79;
Serial.print(data,DEC);
串口發(fā)出去的就是字符串"79"
(3)Serial.print(data,HEX) //發(fā)送的是data的16進(jìn)制字符串
如:
int data=79;
Serial.print(data,HEX);
串口發(fā)出去的就是10進(jìn)制數(shù)字79對(duì)應(yīng)的16進(jìn)制值“4F”
(4)Serial.print(data,OCT) //發(fā)送的是data的8進(jìn)制字符串
如:
int data=79;
Serial.print(data,OCT);
串口發(fā)出去的就是10進(jìn)制數(shù)字79對(duì)應(yīng)的8進(jìn)制值“117”
(5)Serial.print(data,BIN) //發(fā)送的是data的二進(jìn)制字符串
如:
int data=79;
Serial.print(data,BIN);
串口發(fā)出去的就是10進(jìn)制數(shù)字79對(duì)應(yīng)的二進(jìn)制值“1001111”
(6)Serial.print(data,BYTE)
這是把data作為ASCII碼對(duì)應(yīng)的字符后發(fā)送,有的Arduino版本不支持這個(gè)函數(shù)
(7)Serial.println(data)
類似Serial.print (data),把數(shù)據(jù)發(fā)送出去,不同的是發(fā)送的數(shù)據(jù)后面帶上了換行符號(hào)

中斷函數(shù)

外部中斷函數(shù)

(1)attachInterrupt(interrupt,function,mode)
interrupt:中斷服務(wù)號(hào)碼
function:中斷服務(wù)程序
mode:定義何時(shí)發(fā)生中斷,以下四個(gè)contstants預(yù)定有效值:
LOW-當(dāng)引腳為低電平時(shí),觸發(fā)中斷
CHANGE-當(dāng)引腳電平發(fā)生改變時(shí),觸發(fā)中斷ALLING
RISING-當(dāng)引腳有低電平變?yōu)楦唠娖綍r(shí),觸發(fā)中斷
FALLING-當(dāng)引腳有高電平變?yōu)榈碗娖綍r(shí),觸發(fā)中斷
注:中斷0是數(shù)字引腳2 中斷1是數(shù)字引腳3

SPI接口

##本文是由戴鳳智 海玉 秦柱偉 三位老師編寫的Arduino輕松入門里的內(nèi)容,感覺非常有用,推薦給大家,由于事先沒有征得三位老師的同意,如有侵權(quán)請(qǐng)聯(lián)系刪稿##

總結(jié)

以上是生活随笔為你收集整理的Arduino基础语法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。