授人以魚不如授人以漁,目的不是爲了教會你具體項目開發,而是學會學習的能力。但願你們分享給你周邊須要的朋友或者同窗,說不定大神成長之路有博哥的奠定石。。。程序員
QQ技術互動交流羣:ESP8266&32 物聯網開發 羣號622368884,不喜勿噴web
1、基礎篇編程
2、網絡篇數組
- ESP8266開發之旅 網絡篇① 認識一下Arduino Core For ESP8266
- ESP8266開發之旅 網絡篇② ESP8266 工做模式與ESP8266WiFi庫
- ESP8266開發之旅 網絡篇③ Soft-AP——ESP8266WiFiAP庫的使用
- ESP8266開發之旅 網絡篇④ Station——ESP8266WiFiSTA庫的使用
- ESP8266開發之旅 網絡篇⑤ Scan WiFi——ESP8266WiFiScan庫的使用
- ESP8266開發之旅 網絡篇⑥ ESP8266WiFiGeneric——基礎庫
- ESP8266開發之旅 網絡篇⑦ TCP Server & TCP Client
- ESP8266開發之旅 網絡篇⑧ SmartConfig——一鍵配網
- ESP8266開發之旅 網絡篇⑨ HttpClient——ESP8266HTTPClient庫的使用
- ESP8266開發之旅 網絡篇⑩ UDP服務
- ESP8266開發之旅 網絡篇⑪ WebServer——ESP8266WebServer庫的使用
- ESP8266開發之旅 網絡篇⑫ 域名服務——ESP8266mDNS庫
- ESP8266開發之旅 網絡篇⑬ SPIFFS——ESP8266 Flash文件系統
- ESP8266開發之旅 網絡篇⑭ web配網
- ESP8266開發之旅 網絡篇⑮ 真正的域名服務——DNSServer
- ESP8266開發之旅 網絡篇⑯ 無線更新——OTA固件更新
3、應用篇網絡
4、高級篇編程語言
在初步認識什麼是Arduino以後,咱們就開始講解一下Arduino語言基礎,咱們須要知道到底Arduino提供了什麼平臺以及什麼語言來讓咱們作開發(技術基本上都是先學習開發語言)。oop
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() ; } }
對於學過C語言的人,能夠直接大概掃描一下。ui
程序運行中,值不能改變,常量能夠是字符,也能夠是數字,語句:
#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() { }
程序中可變的值稱爲變量。
Arduino可以使用的整數類型以及取值範圍以下:
而在Arduino Due中,int型以及unsigned int型佔用4字節(32位Arm處理器)。
float double 實數,二者精度同樣,都佔有4字節(32位)內存空間,在Arduino Due中,double類型佔用8字節(64位)內存空間。
char類型,佔用1字節,字符需用單引號引用,如:char data = ‘c’;
boolean類型,只有兩個:false和true,佔用1字節內存空間。
int a[5],char b[6],注意不要數組溢出,數組下標從0開始編號。
char 字符串名稱[字符個數]或者 String 字符串名稱,我我的是喜歡String。
程序語句按前後順序依次執行。
根據判斷以決定下一步操做。
形式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結構退出。
重複結構,反覆執行某一部分代碼,while(當)循環和until(直到)循環。
while型循環結構會先判斷給定條件,當給定條件不成立,則退出該結構,當給定條件成立,繼續執行A,如此反覆;
until型循環結構會先執行A,而後判斷給定條件是否成立,若成立當即退出循環,不成立則繼續執行A,如此反覆;
while循環形式:
while(表達式){ 語句; }
until循環形式:
do{ 語句; }while(表達式);
for循環形式:
for(表達式1;表達式2;表達式3){ 語句; }
循環結構中都有一個表達式用於判斷是否進入循環,但有時候須要提早結束循環或者跳過某次循環,則使用break和continue實現;
大概Arduino語法基礎就講到這裏(有c語言基礎的人直接掃描一下就能夠了,畢竟語言是相通的),接下來我準備開始講解實戰,敬請期待。