-
版權聲明:本文爲博主 **單片機菜鳥** 一心一血敲出來的原創作品,未經博主允許不得轉載,多謝支持。
-
本系列博客僅僅做個人技術交流分享,不做任何商業用途。如有不對之處,請留言,本人及時更改。
-
如何和博主一起學習:
博主建立了ESP8266開發之旅學習羣,需要的同學請加 869920142
目錄
1.前言
在初步認識什麼是Arduino之後,我們就開始講解一下Arduino語言基礎,我們需要知道到底Arduino提供了什麼平臺以及什麼語言來讓我們做開發(技術基本上都是先學習開發語言)。
2.Arduino語言以及程序結構
Arduino使用C/C++語言編寫程序(絕大部分的程序員大學都學了這個)。C語言是一種面向過程的編程語言,C++是一種面向對象的編程語言(雖然樓主已經忘光了這個)。早期Arduino核心庫使用C語言編寫,後來引進了面向對象的思想,目前最新核心庫採用C與C++混合編程。
通常所說的Arduino語言,就是指Arduino核心庫提供的各種API的集合。這些API是對更底層的單片機支持庫進行二次封裝所形成的(玩過單片機的人估計都是經常和各種寄存器打交道)。Arduino提供的API可以讓初學者不用理會單片機複雜寄存器配置,然後就能直觀控制Arduino,提高開發效率。
Arduino程序的基本結構如下:
void setup() {
// put your setup code here, to run once(這裏代碼只運行一次):
}
void loop() {
// put your main code here, to run repeatedly(這裏代碼不斷運行):
}
這個模型可以這樣理解(估計學過c語言的都知道main):
int main() {
setup() ;
while(1) {
loop() ;
}
}
3.語言基礎
對於學過C語言的人,可以直接大概掃描一下。
3.1 數據類型
3.1.1 常量
程序運行中,值不能改變,常量可以是字符,也可以是數字,語句:
#define 常量名 常量值
例子:一般人都要用到調試功能(這裏我個人是用串口),但是在真正最終代碼的時候又想關閉調試功能,那麼就可以這麼用:
#define MyDebugSerial Serial
//該條語句用於使能DEBUG輸出信息,屏蔽掉就不會輸出debug調試信息
#define DEBUG
#ifdef DEBUG
#define DBGLN(message) MyDebugSerial.println(message)
#else
#define DBGLN(message)
#endif
void setup() {
MyDebugSerial.begin(9600);
DBGLN("setup end");
}
void loop() {
}
3.1.2 變量
程序中可變的值稱爲變量。
3.1.2.1 整型
Arduino可使用的整數類型以及取值範圍如下:
而在Arduino Due中,int型以及unsigned int型佔用4字節(32位Arm處理器)。
3.1.2.2 浮點型
float double 實數,兩者精度一樣,都佔有4字節(32位)內存空間,在Arduino Due中,double類型佔用8字節(64位)內存空間。
3.1.2.3 字符型
char類型,佔用1字節,字符需用單引號引用,如:char data = ‘c’;
3.1.2.4 布爾型
boolean類型,只有兩個:false和true,佔用1字節內存空間。
3.1.2.5 數組
int a[5],char b[6],注意不要數組溢出,數組下標從0開始編號。
3.1.2.6 字符串
char 字符串名稱[字符個數]或者 String 字符串名稱,我個人是喜歡String。
3.1.3 常見運算符
3.1.4 三大組織結構
3.1.4.1 順序結構
程序語句按先後順序依次執行。
3.1.4.2 選擇結構
根據判斷以決定下一步操作。
形式1(單分支):
if(表達式){
語句;
}
形式2(雙分支):
if(表達式1){
語句1;
}else{
語句2;
}
形式3(多分支):
if(表達式1){
語句1;
}else if(表達式2){
語句2;
}else if(表達式3){
語句3;
}
形式4(超多分支,一般超過4個):
switch(){
case 常量表達式1:
語句1;
break;
case 常量表達式2:
語句2;
break;
case 常量表達式3:
語句3;
break;
......
default:
語句n;
break;
}
注意:
switch後的表達式的結果只能是整型或字符型,如果使用其他類型,則必須使用if語句。switch結構會將switch語句後的表達式與case後的常量表達式比較,如果相符就運行常量表達式所對應的語句;如果都不相符,則會運行default後的語句;如果不存在default部分,程序就直接退出switch結構。一般要使用break語句退出switch結構,如果沒有使用break語句,則程序一直執行到有break的位置才退出或者運行完該switch結構退出。
3.1.4.3 循環結構
重複結構,反覆執行某一部分代碼,while(當)循環和until(直到)循環。
while型循環結構會先判斷給定條件,當給定條件不成立,則退出該結構,當給定條件成立,繼續執行A,如此反覆;
until型循環結構會先執行A,然後判斷給定條件是否成立,若成立立即退出循環,不成立則繼續執行A,如此反覆;
while循環形式:
while(表達式){
語句;
}
until循環形式:
do{
語句;
}while(表達式);
for循環形式:
for(表達式1;表達式2;表達式3){
語句;
}
循環結構中都有一個表達式用於判斷是否進入循環,但有時候需要提前結束循環或者跳過某次循環,則使用break和continue實現;
- break 終止當前選擇結構或者循環結構
- continue 跳過本次循環中剩下的語句
4.總結
大概Arduino語法基礎就講到這裏(有c語言基礎的人直接掃描一下就可以了,畢竟語言是相通的),接下來我準備開始講解實戰,敬請期待。