Arduino學習筆記② Arduino語言基礎

授人以魚不如授人以漁,目的不是爲了教會你具體項目開發,而是學會學習的能力。但願你們分享給你周邊須要的朋友或者同窗,說不定大神成長之路有博哥的奠定石。。。程序員

QQ技術互動交流羣:ESP8266&32 物聯網開發 羣號622368884,不喜勿噴web

1、你若是想學基於Arduino的ESP8266開發技術

1、基礎篇編程

  1. ESP8266開發之旅 基礎篇① 走進ESP8266的世界
  2. ESP8266開發之旅 基礎篇② 如何安裝ESP8266的Arduino開發環境
  3. ESP8266開發之旅 基礎篇③ ESP8266與Arduino的開發說明
  4. ESP8266開發之旅 基礎篇④ ESP8266與EEPROM
  5. ESP8266開發之旅 基礎篇⑤ ESP8266 SPI通訊和I2C通訊
  6. ESP8266開發之旅 基礎篇⑥ Ticker——ESP8266定時庫

2、網絡篇數組

  1. ESP8266開發之旅 網絡篇① 認識一下Arduino Core For ESP8266
  2. ESP8266開發之旅 網絡篇② ESP8266 工做模式與ESP8266WiFi庫
  3. ESP8266開發之旅 網絡篇③ Soft-AP——ESP8266WiFiAP庫的使用
  4. ESP8266開發之旅 網絡篇④ Station——ESP8266WiFiSTA庫的使用
  5. ESP8266開發之旅 網絡篇⑤ Scan WiFi——ESP8266WiFiScan庫的使用
  6. ESP8266開發之旅 網絡篇⑥ ESP8266WiFiGeneric——基礎庫
  7. ESP8266開發之旅 網絡篇⑦ TCP Server & TCP Client
  8. ESP8266開發之旅 網絡篇⑧ SmartConfig——一鍵配網
  9. ESP8266開發之旅 網絡篇⑨ HttpClient——ESP8266HTTPClient庫的使用
  10. ESP8266開發之旅 網絡篇⑩ UDP服務
  11. ESP8266開發之旅 網絡篇⑪ WebServer——ESP8266WebServer庫的使用
  12. ESP8266開發之旅 網絡篇⑫ 域名服務——ESP8266mDNS庫
  13. ESP8266開發之旅 網絡篇⑬ SPIFFS——ESP8266 Flash文件系統
  14. ESP8266開發之旅 網絡篇⑭ web配網
  15. ESP8266開發之旅 網絡篇⑮ 真正的域名服務——DNSServer
  16. ESP8266開發之旅 網絡篇⑯ 無線更新——OTA固件更新

3、應用篇網絡

  1. ESP8266開發之旅 應用篇① 局域網應用 ——炫酷RGB彩燈
  2. ESP8266開發之旅 應用篇② OLED顯示天氣屏
  3. ESP8266開發之旅 應用篇③ 簡易版WiFi小車

4、高級篇編程語言

  1. ESP8266開發之旅 進階篇① 代碼優化 —— ESP8266內存管理
  2. ESP8266開發之旅 進階篇② 閒聊Arduino IDE For ESP8266配置
  3. ESP8266開發之旅 進階篇③ 閒聊 ESP8266 Flash
  4. ESP8266開發之旅 進階篇④ 常見問題 —— 解決困擾
  5. ESP8266開發之旅 進階篇⑤ 代碼規範 —— 像寫文章同樣優美
  6. ESP8266開發之旅 進階篇⑥ ESP-specific APIs說明

1.前言

    在初步認識什麼是Arduino以後,咱們就開始講解一下Arduino語言基礎,咱們須要知道到底Arduino提供了什麼平臺以及什麼語言來讓咱們作開發(技術基本上都是先學習開發語言)。oop

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語言的人,能夠直接大概掃描一下。ui

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可以使用的整數類型以及取值範圍以下:

image

    而在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 常見運算符

image

image

3.1.4 三大組織結構

3.1.4.1 順序結構

    程序語句按前後順序依次執行。

image

3.1.4.2 選擇結構

    根據判斷以決定下一步操做。

image

形式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結構退出。

image

3.1.4.3 循環結構

    重複結構,反覆執行某一部分代碼,while(當)循環和until(直到)循環。

image

    while型循環結構會先判斷給定條件,當給定條件不成立,則退出該結構,當給定條件成立,繼續執行A,如此反覆;
    until型循環結構會先執行A,而後判斷給定條件是否成立,若成立當即退出循環,不成立則繼續執行A,如此反覆;

    while循環形式:

while(表達式){
   語句;
}

    until循環形式:

do{
  語句;
}while(表達式);

    for循環形式:

for(表達式1;表達式2;表達式3){
   語句;
}

image

    循環結構中都有一個表達式用於判斷是否進入循環,但有時候須要提早結束循環或者跳過某次循環,則使用break和continue實現;

  • break 終止當前選擇結構或者循環結構
  • continue 跳過本次循環中剩下的語句

4.總結

    大概Arduino語法基礎就講到這裏(有c語言基礎的人直接掃描一下就能夠了,畢竟語言是相通的),接下來我準備開始講解實戰,敬請期待。

相關文章
相關標籤/搜索