Esp8266开发

Item 6: auto推导出非预期类型时请显示指定类型

Item 5 展示了一些使用auto定义变量的优势,但是auto在有些时候也会推导出一些我们不期望的类型。比如,一个函数通过传入一个Widget返回一个std::vector<bool>的类型,容器内的每一个bool值表示Widget的一个特征:

std::vector<bool> features(const Widget& w);

比如第5个bool值表示Widget是否是高优先属性,代码可以写成下面的形式:

Widget w;
...
bool highPriority = features(w)[5]; // w 是否是高优先属性?
...
processWidget(w, highPriority) // 根据是否是高优先性来处理 w
阅读更多 »Item 6: auto推导出非预期类型时请显示指定类型

5 点亮屏幕1(ssd1306)

视频教程:https://www.bilibili.com/video/BV1cA411E76c/

既然给女神做礼物,那么高逼格道具自然不能少,下面就是我们要用到的道具,ssd1306,0.96寸oled,分辨率128×64

图1 ssd1306

整个模块的尺寸大概是 NodeMCU 的一半,当然也有其他的尺寸。模块上有4个引脚,分别是GND(接地),VDD(也叫VCC,供电),SCK(也叫SCL,时钟信号),SDA(数据)。真正和ESP8266通讯的其实只有SCK和SDA,这就是I2C协议。

阅读更多 »5 点亮屏幕1(ssd1306)

2 Blink程序分析与调试

视频教程:https://www.bilibili.com/video/BV1Ki4y1u7Aa/

Blink程序分析

Esp8266不像普通的C++程序,拥有一个main函数的入口,Esp8266的SDK提供了2个接口,void setup() 和 void loop()。setup函数在系统启动上电完成或者按下reset按钮后调用一次,类似于初始化。而loop函数在setup初始化完以后就会不停的被调用,不管你写了多长的代码,程序只要执行完以后又会重新执行loop,你可以把这个机制想象为外部包裹了一层代码。

int main(int argc, char* argv[]) {
    setup();
    for (;;) {
        loop();
    }
    return 0; 
}
阅读更多 »2 Blink程序分析与调试

1 Esp8266开发环境配置

视频教程:https://www.bilibili.com/video/BV1PD4y1o7rQ/

Esp8266是由上海乐鑫开发的一款物联网模块,具备80Mhz – 160Mhz的主频,80kb的内存,13个GPIO并且支持2.4G wifi。当然,光有芯片我们是不能做什么的,因此本系列教程基于NodeMCU开发板和Arduino IDE来开发一些简单有趣的小东西。

1. 选择开发板

本教程使用的是NodeMCU1.0的开发版,如下图,注意绿色框内的引脚,没有引脚的是NodeMCU0.9,会少几个GPIO。

从外观上看,下面两款开发板没有什么区别,用起来也没有什么不一样,就是红框中的usb转串口芯片不一样。现在大多数的系统已经对这两款芯片免驱了,不过如果你的系统正好没有驱动的话,可以根据这个串口芯片型号安装正确的驱动。

nodemcu1.0
阅读更多 »1 Esp8266开发环境配置