ESP8266从零学起第一课入门测试(超详细)

ESP8266从零学 笔记

L1 ESP8266的入门测试

P1 blinker APP控制Esp8266板载LED

前言

  因为是初学者所以特别希望能有一份详细的教程,可是俺没找到,所以就写了这么一篇文章,希望同学们(大朋友们)能够喜欢,不过呢还是建议:自己多百度多思考,才能理解的更多。
  注释中的“[小白说]”,代表的是个人的观点,如果有理解的不对的地方,希望能够进行沟通并改正。
 因为注释的过于细致,所与继续代码玩一玩的同学,在这先提供一份完整的代码

材料:Esp8266一块、烧写器一块、安装有blinker APP的手机、自家的WiFi网络(手机热点也行)

#define BLINKER_PRINT Serial
#define BLINKER_WIFI

#include 

char auth[] = "我是来自blinker的密钥";
char ssid[] = "HUAWEI nova 21";
char pswd[] = "我是密码";

// 新建组件对象
BlinkerButton Button1("btn");

// 按下按键即会执行该函数
void button1_callback(const String & state) {
    BLINKER_LOG("get button state: ", state);
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}

// 如果未绑定的组件被触发,则会执行其中内容
void dataRead(const String & data)
{
    BLINKER_LOG("Blinker readString: ", data);
}

void setup() {
    // 初始化串口
    Serial.begin(115200);

    #if defined(BLINKER_PRINT)
        BLINKER_DEBUG.stream(BLINKER_PRINT);
    #endif

    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, HIGH);
    // 初始化blinker
    Blinker.begin(auth, ssid, pswd);
    Blinker.attachData(dataRead);
    Button1.attach(button1_callback);
}

void loop() {
    Blinker.run();
}

P2 代码的注释

接下来是硬货了哦!!!

第一段

//预定义blinker的两个库
#define BLINKER_PRINT Serial
#define BLINKER_WIFI

//声明blinker的头文件
#include 

//下面就是要你的8266联网的部分了。密钥、wifi名称、wifi密码。
char auth[] = "在这写来自blinker的密钥";
char ssid[] = "在这写你要芯片接入的wifi的名称";
char pswd[] = "在这写你的wifi密码";
关于密钥“ Secret Key”的获取方法!

{ESP8266从零学起第一课入门测试(超详细)_第1张图片
打开blinker APP
– 选择右上角‘加号’

– 在DIY设备中选择‘Arduino’

– 进入‘设备接入向导’后

– 选择右下角‘wifi接入’方式

– 新的界面中间会显示你的secret key

}

关于“wifi名称”!
我比较保守的选择了英文的WiFi名字,没尝试中文的WIFI能不能用,我感觉有点悬!
关于“wifi密码”!
你自己的wifi密码当然是你自己知道了哦!

第二段

// 新建组件对象
BlinkerButton Button1("btn");//需要你在blinker APP里新建一个组件
方式如下

{
ESP8266从零学起第一课入门测试(超详细)_第2张图片

回到blinker APP的界面

–选择刚刚新建的“按钮组件”;

–找到右上角的“编辑”按钮;

–再来到最下面找到“按键”并点击;

–选择你新建产生的“按键组件”;

–着重更改 “数据键名”的内容。注意与本行代码( )中的内容一致;

–调整完成之后,点击右上角“保存”;

–在右上角的 “锁头” 图标,锁定你的控制界面。
}

第三段

// 按下按键即会执行该函数

void button1_callback(const String & state)
 //关于按钮button_1的回调函数,函数的返回值类型为void(无类型)。
 //state 是这个函数的变量 
 //“const String &” 是对一个string类型变量的常引用。
 //常引用参数就是在函数内不能修改传入的变量的值,这样做可以防止数据被随意的篡改。
 {
    BLINKER_LOG("get button state: ", state);
    //blinker日志(“获取按钮状态:”,状态);
    //get button state在程序中有变色所以是一个blinker库中的函数,功能如上所述
    //state 是保存按钮状态的变量。
   
    digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
	//引脚写入程序,控制板载LED的‘亮与灭’
	//LED_BUILTIN是blinker库中的板载led引脚。
	//digitalRead(LED_BUILTIN),读取现在板载LED的之前的状态,
	//‘ !’代表非,即下一次的板载LED状态与上一次的相反。上次是亮的,这次就要灭;上次是灭的,这次就要亮。
}

第四段

//[官方] 如果未绑定的组件被触发,则会执行其中内容
//[小白话]如果你的blinker APP上的按键组件与程序中的名称不一致,触发时执行这个函数而不是上一个函数。

void dataRead(const String & data)
 //与上一个函数一样的哦。
 //dataRead是这个函数的名字;
 //data 是这个函数的变量;
{
    BLINKER_LOG("Blinker readString: ", data);
    //blinker日志("blinker读取字符串:",数据)
    //[小白说]blinker用来读取字符串格式的数据。
}

第五段

void setup()//[小白说]这部分应该是没有问题的,Arduino IDE的编程框架
 {
    // 初始化串口
    Serial.begin(115200);//[小白说]在这废话一句,咱也不是到为啥是115200

    #if defined(BLINKER_PRINT)//如果已定义(BLINKER_PRINT)
    //关于为什么再if前有个‘#’,在最下面有解释,可以自助了解。
        BLINKER_DEBUG.stream(BLINKER_PRINT);
        //[官方]用于指定调试信息输出的串口,设备开发时调试使用,项目或产品成型后,可以删除不用。
        //[小白说]小白在这表示自己也不明白,有明白的大神可以帮帮忙
    #endif//#endif是#if的搭档

    // 初始化有LED的IO
    pinMode(LED_BUILTIN, OUTPUT);//设置板载LED为输出模式
    digitalWrite(LED_BUILTIN, HIGH);//点亮板载LED,[小白说]他要一开始是亮的
    
    // 初始化blinker
    
    Blinker.begin(auth, ssid, pswd);
    //[小白说]auth ssid pswd 这三个家伙在最开始用来保存你的密钥、wifi名、密码来着
    //[小白说]没有查到直接对这句的解释,猜测是用来设置与blinker网端通信的
    
    Blinker.attachData(dataRead); //没有绑定的组件的函数注册
    Button1.attach(button1_callback);//绑定的按键组件的函数注册
	//[小白说]这里对应的是绑定与未绑定组件的自定义函数。将两种组件进行网端注册
}
#if 和 if 都是C和C++中的指令,但是二者区别很大。

1)#if属于条件编译技术,用于给编译器提供信息,控制有些代码变成机器语言;
2)if属于程序判断,在程序运行时控制语句是否被执行;
3)#if在程序编译前执行,if在程序运行时执行;
4)#if后面不能写变量,if后面可以写变量。

第六段

void loop() //[小白说]这也是Arduino IDE编程的框架,意为程序的循环部分
{
    Blinker.run();//[小白说]小家伙开始工作啦!!!
    //用来保持设备间的连接及处理收到的数据,需要频繁被调用所以放在loop()函数中
    }

完整代码在开头

感谢阅读

作者QQ:2489055370,
欢迎大神指教与同学的提问(提问这篇的内容或者更简单的可以 [笑哭] )

你可能感兴趣的:(ESP8266从零学起第一课入门测试(超详细))