Arduino基础语法
前言:只要有點C語言基礎,學Arduino語法就不難,只是有點常量和數據類型以及函數跟C語言不大一樣,下面,我將向大家介紹一下Arduino的基礎語法。我用的是Arduino UNO的板子,Arduino UNO是Arduino USB接口系列的最新版本,成為Arduino平臺的參考標準模板。UNO的處理器核心是ATmega328,同時具有14路數字輸入/輸出(其中6路可作為PWM輸出),有6路模擬輸入,一個16MHZ晶體振蕩器,一個USB口,一個電源插座,一個ICSP header和一個復位按鈕。
一、Arduino中的常量
1.HIGH/LOW:表示數字I/O口的電平。HIGH表示高電平,LOW表示低電平
2.INPUT/OUTPUT:表示數字I/O口的方向。INPUT表示輸入,OUTPUT表示輸出。
3.true/false:true表示邏輯狀態真(1),false表示假(0)
4.integer constants:整型常量
5.floating point constants:浮點型常量
二、Arduino中的數據類型
| void | 只用作函數聲明,表示沒有返回值 | ||
| boolean | true,false | 每一個布爾變量占一個字節的內存 | |
| char | 1 | -128~127 | 字符 |
| unsigend char | 1 | 0~255 | 無符號字符 |
| byte | 0~255 | -128~127 | 字節。1byte=8bit(位) |
| int | 2 | -32768~32767 | 整數,在Arduino Due上是4個字節 |
| unsigned int | 2 | 0~65535 | 無符號整數 |
| word | 2 | 0~65535 | 字 |
| long | 4 | ~2147483648~2147483647 | 長整數 |
| unsigned long | 4 | 0~2的32次方-1 | 無符號長整數 |
| short | 2 | -32768~32767 | 短整數 |
| float | 4 | -3.4028235E+38~3.4028235E+38 | 單精度浮點數,只有6~7位小數精度 |
| double | 4 | 雙精度浮點數,在Arduino Due上為8個字節,其余的跟float一樣 | |
| string | 字符串,相當于char類型的數組 | ||
| String | object | ||
| array | 數組 |
三、數據類型轉換函數
1.char():將任意類型的值轉換成char類型;
2.byte():將任意類型的值轉換成byte類型;
3.int():將任意類型的值轉換成int類型;
4.long():將任意類型的值轉換成long類型;
5.float():將任意類型的值轉換成float類型;
四、Arduino基本函數
數字I/O口
1.pinMode(pin,mode)
這是I/O輸入輸出模式定義函數。pin為對應的引腳,mode表示INPUT或OUTPUT
例:pinMode(13,OUTPUT);//將腳位13設定為輸出模式
2.digitalWrite(pin,value)DEFAULT、
數字I/O口輸出電平定義函數。pin為0~13之間的一個值,代表對應的引腳。value為HIGH或LOW
注:必須先利用pinMode(pin,mode)函數定義輸入或輸出模式后,digitalWrite及下面介紹的函數才能生效
例:digitalWrite(9,HIGH);//將腳位9設定輸出高電位
3.digitalRead(pin)
數字I/O口讀入電平函數。pin為0~13之間的一個值,代表對應的引腳。該函數的返回值為int型,表示從引腳讀入的電壓是高電平或低電平。當檢測到引腳為高電平時表示為HIGH,低電平時表示為LOW。
例:val=digitalRead(6);//讀出引腳6的值返回給變量val
上述這些函數都可以在Arduino開發環境目錄下的hardware\arduino\cores\arduino文件夾里的wiring_digital.c和其他c文件中查看到。
模擬I/O口
1.analogReference()
此函數的作用是配置模擬引腳的參考電壓。在嵌入式應用中,引腳獲取模擬電壓值之后,將根據參考電壓的大小把模擬值轉換為0~1023之間的一個數。該函數為無返回值,參數有3種類型(DEFAULT/INTERNAL/EXTERNAL),具體含義為:
DEFAULT:默認值,參考電壓為5V
INTERNAL:低電壓模式,使用片內基準電壓源
EXTERNAL:擴展模式,通過AREF引腳獲取參考電壓
2.analogRead(pin)
模擬I/O口讀函數,。讀出該引腳位的電壓源并回傳一個0到1023之間的數值表示相對應的0到5的電壓值
例:val=analogRead(0);//讀出模擬量引腳的值并回傳給val
3.analogWrite(pin,value)
和函數analogRead(pin)相反,它是向模擬口pin引腳寫入一個數值,該函數值的大小為value
時間函數
1.millis()
返回時間函數(ms)。計算從程序開始執行到目前的毫秒時間,函數返回值為unsigned long 型。最大計時時間約為9個多小時(之后數據將會溢出),數據溢出后從零重新開始計時
例:time=millis();//將程序到當前為止的運行時間返回給變量time
2.micros()
類似返回時間函數millis(),單位為微妙,大約需要70min溢出
3.delay(ms)
延時函數(單位為ms),暫停程序運行一段時間
例:delay(500);//暫停半秒
4.delayMicroseconds(微秒)
延時函數(單位微妙),類似delay()
隨機數
1.randomSeed(seed) //函數用來設置隨機數種子
例:randomSeed(analogRead(5));//使用類比輸入當作亂樹種子
2.long random(max)
3.long random(min,max)
回傳指定區間的亂數,型態為long。如果沒有指定最小值,預設最小值為0
例:long randnum=random(0,100);//回傳0~99之間的數字
long randnum=random(11);//回傳0~10之間的數字
串口通信
1.Serial.begin(int speed) //初始化串口比特率函數
例:Serial.begin(9600);
2.Serial.available() //串口輸入數據讀取前的判斷函數
返回值為1時說明串口緩存(buff)中有數據,返回值為0時說明串口buff中無數據或者數據已經讀取出來過
例:if(Serial.available())
3.Serial.read() //從串口buff中讀取數據進來
例:information=Serial.read();
4.Serial.flush() //清空串口buff中的數據
5.Serial.print(data) //把數據data從串口發送出去
(1)Serial.print(data) //把data對應的字符串ASCII碼發送出去。
如:int data=79;
Serial.print(data);
串口發送出去的就是字符串"79"的ASCII
(2)Serial.print(data,DEC) //發送的是data的10進制字符串
如:int data=79;
Serial.print(data,DEC);
串口發出去的就是字符串"79"
(3)Serial.print(data,HEX) //發送的是data的16進制字符串
如:
int data=79;
Serial.print(data,HEX);
串口發出去的就是10進制數字79對應的16進制值“4F”
(4)Serial.print(data,OCT) //發送的是data的8進制字符串
如:
int data=79;
Serial.print(data,OCT);
串口發出去的就是10進制數字79對應的8進制值“117”
(5)Serial.print(data,BIN) //發送的是data的二進制字符串
如:
int data=79;
Serial.print(data,BIN);
串口發出去的就是10進制數字79對應的二進制值“1001111”
(6)Serial.print(data,BYTE)
這是把data作為ASCII碼對應的字符后發送,有的Arduino版本不支持這個函數
(7)Serial.println(data)
類似Serial.print (data),把數據發送出去,不同的是發送的數據后面帶上了換行符號
中斷函數
外部中斷函數
(1)attachInterrupt(interrupt,function,mode)
interrupt:中斷服務號碼
function:中斷服務程序
mode:定義何時發生中斷,以下四個contstants預定有效值:
LOW-當引腳為低電平時,觸發中斷
CHANGE-當引腳電平發生改變時,觸發中斷ALLING
RISING-當引腳有低電平變為高電平時,觸發中斷
FALLING-當引腳有高電平變為低電平時,觸發中斷
注:中斷0是數字引腳2 中斷1是數字引腳3
SPI接口
##本文是由戴鳳智 海玉 秦柱偉 三位老師編寫的Arduino輕松入門里的內容,感覺非常有用,推薦給大家,由于事先沒有征得三位老師的同意,如有侵權請聯系刪稿##
總結
以上是生活随笔為你收集整理的Arduino基础语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lol老是闪退到桌面_win10
- 下一篇: 华为交换机查看网口光功率命令