ESP8266-Arduino编程实例-PCF8574IO扩展模块驱动

PCF8574IO扩展模块驱动

1、PCF8574介绍

PCF8574 是一个使用 I2C 协议的 8 位 I/O 端口扩展器。 通过开发板的SDA 和 SCL 引脚来控制多达 8 个数字 I/O 端口。

在这里插入图片描述

其中,A0,A1,A2 为地址引脚,P0,P1,P2,P3,P4,P5,P6,P7 为数字端口。PCF8574的地址如下:

在这里插入图片描述

在前面的文章,对PCF8574的使用及驱动做了详细的介绍,请参考:

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • PCF8574传感器模块一个
  • LED两个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

在前面的文章中,对如何搭建ESP8266开发环境做了详细的介绍,请参考:

ESP8266 NodeMCU的引脚介绍在前面的文章中做了详细的介绍,请参考:

4、代码实现

本次实例使用PCF8574驱动库如下:

1)导入依赖库头文件

1
2
3
4
5
6
#include "PCF8574.h"

// Set i2c address
PCF8574 pcf8574(0x20);
uint8\_t pcf8574Pins[] = {P6,P7};

2)初始化设备

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void setup()
{
Serial.begin(115200);
delay(1000);

// Set pinMode to OUTPUT
for(uint8\_t i = 0;i < 2;i++){
pcf8574.pinMode(pcf8574Pins[i], OUTPUT);
}

Serial.print("Init pcf8574...");
if (pcf8574.begin()){
Serial.println("OK");
}else{
Serial.println("KO");
}
}

3)控制IO端口

1
2
3
4
5
6
7
8
9
10
11
12
13
void loop()
{
for(int i = 0; i < 2;i++){
pcf8574.digitalWrite(pcf8574Pins[i], HIGH);
delay(100);
}

for(int i = 0; i < 2;i++){
pcf8574.digitalWrite(pcf8574Pins[i], LOW);
delay(100);
}
}

文章来源: https://iotsmart.blog.csdn.net/article/details/126221008