Arduino 硬件编程语言基础学习入门
1、Arduino程序必要的setup()和loop()
void setup()
{}
void loop()
{}
setup()函數中的代碼只會被運行一次,通常用來做一些初始化工作;loop()中的代碼會被無限次地重復運行,此函數為程序的主體部分。
2、程序中的值
2.1 變量和常量
常量是一個字面量,只可以表示一個特定的量。
2.2 變量類型
2.3 變量的作用域和修飾符
2.3.1 變量的作用域
作用域及作用范圍,Arduino語言中的變量是由確定性的作用范圍的。變量的作用域是被限制在語句塊中的。在變量作用域之外的位置無法訪問到該變量。
2.3.2 變量的修飾符
在Arduino語言中,有static、volatile和const三個變量修飾符。static和const 的作用是修改變量的存儲位置以適應不同的需求。
2.4 獲取變量大小的工具—sizeof()
通過sizeof()獲取指定變量的大小。
2.5 變量類型轉換
Arduino語言提供了一些函數可以將指定的值轉換為特定的類型
3、運算符
3.1 數學運算符
3.2 比較運算符
3.3 布爾運算符
布爾運算符用來對兩個布爾表達式進行運算,運算的結果仍然為布爾值。
3.4 指針運算符
指針運算符包括&(引用)和*(間接引用)。& 運算符用來引用變量或者函數的地址,* 則是通過地址間接地引用指定地址中的內容。
3.5 位運算符
3.6 復合運算符
復合操作運算符是部分數學運算符、位運算符與賦值運算的一種簡寫形式。
4、語法進階
4.1 預定義命令#define和 #include
預處理的語句是在編譯器的預處理步驟進行處理。
預處理命令#define 用來定義一個常量,它的語法形式如下:#define constantName value
4.2 語句和語句塊
4.2.1 語句:Arduino 將分號(;)視為一條語句的結束符號。
4.2.2 語句塊:
兩個花括號之間的語句塊,它有兩個作用:將多條語句作為一個整體和形成一個作用域。同時,語句塊又是一個獨立的作用域,因此其中定義的變量a無法在語句塊之外使用。
4.3 注釋
多行注釋:“/* */”
單行注釋:“//”
5、控制結構
5.1 條件判斷語句if 和if …… else
5.2 跳轉語句break、continue、return和goto
break用于跳出switch、while、do……while和for結構。
continue用于在while、do……while和for循環結構中結束當前循環。
return用于立即結束當前程序執行。
goto用于將程序執行流程跳轉到指定位置后繼續執行。
5.3 分支語句switch case
5.4 循環語句while和do……while
5.4.1 通過while結構就可以使計算機重復地執行一些語句,直到所要求的條件不滿足為止,其語法結構如下:
while(條件)
語句
后續語句
5.4.2 do …… while結構與while結構的執行過程類似,但do …… while結構會保證其中的“語句”會執行一次:
do{
語句
}while(條件)
后續語句
5.5 循環語句for
for結構用來在滿足指定條件的情況下循環執行語句,其語法結構如下:
for(語句1;語句2;語句3)
語句
后續語句
6、函數
6.1 系統函數
系統函數是Arduino語言默認提供的函數,這些函數可以直接拿來使用而不需要定義。
-
數字I/O口的操作函數
-
pinMode(pin,mode);
pinMode函數用以配置引腳與輸出或輸入模式,它是一個無返回值函數。函數有兩個參數,pin和mode。pin參數表示要配置的引腳,mode參數表示設置的參數INPUT(輸入)和OUTPUT(輸出)。INPUT參數用于讀取信號,OUTPUT用于輸出控制信號。PIN的范圍是數字引腳0-13,也可以把模擬引腳(A0-A5)作為數字引腳使用,此時編號為14腳對應模擬引腳0,19引腳對應模擬引腳5,。一般會放在setup里,先設置再使用。
-
digitalWrite(pin,value);
該函數的作用是設置引腳的輸出電壓為高電平或低電平。該函數也是一個無返回值的的函數。Pin參數表示所要設置的引腳,value參數表示輸出的電壓HIGH(高電平)或LOW(低電平)。
注意:使用前必須先用pinMode設置。
-
digitalRead(pin);
該函數在引腳設置為輸入的情況下,可以獲取引腳的電壓情況HIGH(高電平)或者LOW低電平。
-
模擬I/O口的操作函數
-
analogReference(type);
該函數用于配置模擬引腳的參考電壓,有三種類型:default:默認值,參考電壓是5v;internal:低電壓模式,使用片內基準電壓源2,56v;external:擴展模式,通過AREF引腳獲取參考電壓(注意:不使用本函數的話,默認是參考電壓5v。使用AREF接參考電壓,需接個5K歐的上拉電阻)
-
analogRead(pin);
用于讀取引腳的模擬量電壓值,每讀取一次需要花100US的時間,參數pin表示所要獲取模擬量電壓值的引腳,返回為int型。精度10位,返回值從0-1023。(注意:函數參數的pin范圍是0-5,對應板上的模擬口A0-A5)
-
analogWrite(pin,value);
該函數是通過PWM的方式在引腳上輸入一個模擬量。PWM——Pulse-Width Modulation——脈沖寬度調制。
PWM輸出的一般形式:
主要用于LED寬度控制,電機轉速控制等方面。Arduino中的PWM的評率大約為490HZ。
UNO板上支持以下數字引腳(不是模擬輸入引腳)作為PWM模擬輸出:3、5、6、9、10、11板上帶PWM輸出的都有~號。(注意:PWM輸出位數為8位,從0-255)
-
高級I/O
Pulseln(pin,state,timeout)
該函數用于讀取引腳脈沖的時間長度,脈沖可以是HIGH或者LOW。如果是HIGH,函數將先等引腳變為高電平,然后開始計時,一直到變為低電平。
返回脈沖持續的時間長度,單位為ms,如果超時沒有讀到的話,返回0。
例程說明:
做一個按鈕脈沖計時器,測一下按鈕的時間,測測誰的反應快,看誰能按出最短的時間。按鈕接第3腳。
-
時間函數
-
delay(ms);
延時函數,參數是延時的時長,單位是ms(毫秒)
-
delayMicroseconds(us);
延時函數,參數是延時的時長,單位是us(微秒)。1ms=1000us。該函數可以產生更短的延時。
-
millis();
應用該函數,可以獲取單片機通電到現在運行的時間長度,單位是ms,系統最長的記錄時間為9小時22分,超出從0開始。返回值是unsigned long型。該函數適合作為定時器使用,不影響單片機的其他工作。(使用delay函數期間無法做其他工作。)100ms=1s
-
micros();
該函數返回開機到現在運行的微秒數。返回值是unsigned long 70分鐘溢出。1000us=1ms
例程原理
連續按按鈕,看你的反應有多快?
按鈕接D3;從第2按開始,每按一次會減去上一次按的時間,看你連續按的時間間隔有多快?
-
中斷函數
中斷——由于某一個隨機事件的發生,計算機暫停源程序的運行,轉去執行另一個程序(隨機事件),處理完畢后又自動返回原程序繼續運行。
中斷源——引起中斷的原因,或能發生中斷源申請的來源。
主程序——計算機現行運行的程序。
中斷服務子程序——處理突發事件的程序。
-
attachInterrupt(interrput,function,mode);
該函數用于設置外部中斷,函數有3個參數,分別表示中斷源,中斷處理函數和觸發模式。
中斷源可選0或者1,對應2或者3號數字引腳。
中斷處理函數是一段子程序,當中斷發生時執行該子程序部分。
觸發模式有四種類型,LOW(低電平觸發)、CHANGE(變化時觸發)、RISING(低電平變為高電平出觸發)、FALLING(高電平變為低電平觸發)。
例程原理:
數字D2口接按鈕開關,D4口接LED燈1(紅色)。D5口接LED2(綠色)。在例程中LED3每秒閃爍一次。使用中斷0來控制LED1,中斷1來控制LED2。按下按鈕,馬上響應中斷,由于中斷響應速度快,LED3不受影響,繼續閃爍。比查詢的效率要高。嘗試4個參數,例程1試驗LOW,CHANGE參數,例程2試驗RISING和FALLING參數。
-
detachInterrupt(interrput);
該函數用于取消中斷,參數interrupt表示所要取消的中斷源。
-
串口通訊函數
串口概述:
串口接口Serial Interface是指數據一位位地順序傳送,其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信。
串口的數據傳輸率是115kbps – 230kbps。初期是為了實現連接計算機外設的目的,一般用來連接鼠標和外置Modem以及老式攝像頭和寫字板等設備。由于串口(COM)不支持熱插拔及傳輸速率較低目前部分新主板和大部分便捷電腦已經開始取消改接口,目前串口多用于工控和測量設備以及部分通信設備中。
串口的應用:
應用舉例:各種傳感器采集裝置,GPS信號采集裝置,多個單片機通訊系統,門禁刷卡系統的數據傳輸,機械手控制、操縱面板控制電機等等。廣泛應用于低速數據傳輸的工程應用。
-
Serial.begin();
該函數用于設置串口的比特率。一般的波特率有9600,19200,57600,115200等。波特率是指每秒傳輸的比特數。除以8可以得到每秒傳輸的字節數。示范:Serial.begin(57600);
-
Serial.available();
該函數用來判斷串口是否收到數據,函數的返回值為int型,不帶參數。
-
Serial.read();
將串口數據讀入該函數不帶參數,返回值為串口數據,int型。
-
Serial.print();
該函數往串口發數據。可以發變量,也可以發字符串。
例句1:Serial.print(“today is good”);
例句2:Serial.print(“x,DEC”);以10進制發送x;
例句3:Serial.print(“x,HEX”);以16進制發送變量x。
-
Serial.println();
該函數與Serial.print()類似,只是多了換行功能。
-
數學庫
- min(x,y);求兩者最小值
- max(x,y);求兩者最大值
- abs(x);求絕對值
- sin(rad);求正弦值
- cos(rad);求正切值
- tan(rad);求正切值
- random(small,big);求兩者之間的隨機數
RANDOM(SMALL,BIG);
返回值為long。
舉例:
long x;
x=random(0,100);可以生成從0到100以內的整數
6.2 調用函數
調用函數就是要使用函數的功能,可以使用如下語法進行調用:funcname(arg1,arg2……);
6.3 自定義函數
定義函數的語法如下:
typeSpecifier functionName(argList){}
總結
以上是生活随笔為你收集整理的Arduino 硬件编程语言基础学习入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The whole Fiori appl
- 下一篇: 红旗 Linux 官方社区_红旗车机系统