MCP23017模块是一个I2C扩展IO口的模块,


查了下,在Arduino环境下有库支持,就用ESP8266模块进行了简单的测试。连接到ESP8266只需要四根线:
MCP23017模块 ESP8266模块
=============================
VCC 3.3V
GND GND
SCL D1(GPIO5)
SDA D1(GPIO4)
=============================
看着电路中,和I2C设置有关的地址引脚A0、A1、A2都已经接地了,就以为没有问题,直接上程序测试。
#include <Wire.h>
#include <MCP23017.h>
#define MCP23017_ADDR 0x20
MCP23017 mcp = MCP23017(MCP23017_ADDR);
void setup() {
Wire.begin();
Serial.begin(115200);
mcp.init();
mcp.portMode(MCP23017Port::A, 0); //Port A as output
mcp.portMode(MCP23017Port::B, 0); //Port B as output
mcp.writeRegister(MCP23017Register::GPIO_A, 0x00); //Reset port A
mcp.writeRegister(MCP23017Register::GPIO_B, 0x00); //Reset port B
}
void loop() {
mcp.writePort(MCP23017Port::A, 0x00);
mcp.writePort(MCP23017Port::B, 0x00);
delay(500);
mcp.writePort(MCP23017Port::A, 0xFF);
mcp.writePort(MCP23017Port::B, 0xFF);
delay(500);
}结果程序上传后,预想中的控制输出口点评交替变化没有出现,相连的LED也没闪烁。于是重新改用I2C扫描程序,确认I2C地址是否存在,结果显示没有任何I2C设备。于是用杜邦线连接MCP23017模块的A0、A1、A2到ESP8266模块的GND,重新写回测试程序。
终于看到LED闪烁了。
我要赚赏金
