ESP8266-Arduino编程实例-PCF8575IO扩展器驱动

PCF8575IO扩展器驱动

1、PCF8575介绍

PCF8575用于两线双向总线 (I2C) 的 16 位 I/O 扩展器专为 2.5-V 至 5.5-V VCC 操作而设计。

PCF8575 器件通过 I2C 接口 [串行时钟 (SCL)、串行数据 (SDA)] 为大多数微控制器系列提供通用远程 I/O 扩展。

在这里插入图片描述

PCF8575 具有一个 16 位准双向输入/输出 (I/O) 端口(P07–P00、P17–P10),包括具有大电流驱动能力的锁存输出,可直接驱动 LED。 每个准双向 I/O 都可以用作输入或输出,而无需使用数据方向控制信号。 上电时,I/O 为高电平。 在这种模式下,只有 VCC 的电流源处于活动状态。

PCF8575具有如下特性:

  • I2C 到并行端口扩展器
  • 开漏中断输出
  • 待机电流消耗低至 10 µA(最大值)
  • 与大多数微控制器兼容
  • 400kHz 快速 I2C 总线
  • 通过三个硬件地址引脚寻址,最多可使用八个设备
  • 具有大电流驱动能力的锁存输出,用于直接驱动 LED

2、硬件准备

  • ESP8266 NodeMCU开发板一块
  • PCF8575模块一个
  • 发光LED一个
  • 470欧姆电阻一个
  • 面板板一个
  • 杜邦线若干
  • 数据线一条

硬件接线如下:

在这里插入图片描述

3、软件准备

  • Arduino IDE或VSCode + PlatformIO

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

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

4、代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <Wire.h>

// Set I2C address
int address = 0x20;

void setup()
{
Wire.begin();
// Set all ports as output
pf575\_write(word(B11111111,B11111111));
}

void loop()
{
// Set port P0 on
pf575\_write(word(B00000000,B00000001));
delay(1000);
// Set port P0 off
pf575\_write(word(B00000000,B00000000));
delay(1000);
}

// Function for writing two Bytes to the I2C expander device
void pf575\_write(uint16\_t data)
{
Wire.beginTransmission(address);
Wire.write(lowByte(data));
Wire.write(highByte(data));
Wire.endTransmission();
}

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