在前期的文章中,提到了用D1模块连接阿里云,然后通过APP控制该模块上的LED等开关。
参考文章:
使用arduino D1 wifi模块(WeMos D1)连接阿里云物联网平台并成功实现APP点亮板载LED(二)---WeMos D1介绍
使用的板子是下图所示
实验的目的是点亮电路板上的小灯。然而很多场合我们还需要对电路板上的GPIO口进行操作。
我们知道在arduino UNO等AVR单片机做核心组成的板子上,直接调用引脚序号就行了。
例如下面语句,设置引脚2为输入性质的引脚。
那么操作的时候,就会对序号2的引脚进行操作。
可是ESP8266这个板子是不能这样用的。
参考YF ROBOT给出的引脚接口,标注D??的,其实是对它自己而言的GPIO号。如果用arduino开发环境开发是不能这样用的。
我们操作2号引脚,并不能对D2进行操作。
所以我们需要掌握ARDUINO的编号规则与ESP8266真实的引脚一一对应关系。
下面了解一下如何对应。
当前arduino编程环境安装的是esp8266开发板库(2.5.0版本)。
这个开发板库是干什么用的?
其实就是将arduino编程环境中,大家都已经习惯的语言,通过开发板库,转化成为对应开发板能执行的最终程序。
例如将引脚设置为输入性质的语句。最后翻译成能够在ESP8266上面执行的程序,也许是很多行代码(这里就不分析,并非本文重点,只是帮助理解)。
好的,我们再看在2.5.0版本的开发板库中,引脚是怎么对应的。
定义引脚对比的文件在下图所示的文件夹中,文件夹在用户目录下,路径为:C:\Users\Administrator\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.5.0\variants\d1
用notepad++软件打开(下载连接:https://download.csdn.net/download/youngwah292/12127037)
就可以很方便地看到引脚对应关系。例如D0对应的是ESP8266本来的GPIO3引脚,D2对应的是GPIO16引脚。
为了更加清楚地对比,现在实物图上进行标注,其中有5个引脚是短路的,也就是说D1 WIFI板子上,并没有标注的有那么多
如果将对应关系标注在小板子上,是下图的方式
以上了解了引脚对应关系。下面开始具体操作。注意,调用2号引脚,在ESP8266板子上,不能用数字“2”,应该用”D2“来表示。
与引脚定义文件pins_arduino.h对应。否则又乱了。
自己做一个按键程序试试看吧,就是这样的。
代码来自于arduino基础示例程序。
/*
DigitalReadSerial
Reads a digital input on pin 2, prints the result to the Serial Monitor
This example code is in the public domain.
http://www.arduino.cc/en/Tutorial/DigitalReadSerial
*/
// digital pin 2 has a pushbutton attached to it. Give it a name:
int pushButton = D2;
// the setup routine runs once when you press reset:
void setup() {
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
// make the pushbutton's pin an input:
pinMode(pushButton, INPUT);
}
// the loop routine runs over and over again forever:
void loop() {
// read the input pin:
int buttonState = digitalRead(pushButton);
// print out the state of the button:
Serial.println(buttonState);
delay(1); // delay in between reads for stability
}