授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力。希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石。。。
QQ技术互动交流群:ESP8266&32 物联网开发 群号622368884,不喜勿喷
一、你如果想学基于Arduino的ESP8266开发技术
一、基础篇
二、网络篇
- 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固件更新
三、应用篇
四、高级篇
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语言基础的人直接扫描一下就可以了,毕竟语言是相通的),接下来我准备开始讲解实战,敬请期待。
来源:https://www.cnblogs.com/danpianjicainiao/p/11048624.html