littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于Arduino的I2C共享端口库

项目简介

本项目是一个用于Arduino的开源库,借助I2C接口对共享端口扩展器(如PCF8574、PCF8575、MCP23017等)进行控制。这些端口扩展器通过I2C总线与Arduino相连,能提供额外的数字I/O引脚,进而释放Arduino的数字引脚以用于其他用途。

项目的主要特性和功能

  1. 支持多种I2C端口扩展器,涵盖PCF8574、PCF8575、MCP23017等。
  2. 允许多个设备共享同一组I2C端口,减少代码冗余与冲突。
  3. 具备桥接功能,可让现有的Arduino库(如Keypad、LiquidCrystal等)使用I2C端口扩展器的引脚。
  4. 提供非阻塞定时器功能,用于重复脉冲单个引脚。
  5. 包含示例代码,展示如何使用这些库来控制键盘、LCD显示器和闪烁引脚。

安装使用步骤

假设用户已经下载了本项目的源码文件,按以下步骤操作: 1. 导入库:将下载的库文件解压到Arduino的库文件夹中(通常位于Arduino/libraries目录下)。 2. 编写代码:在Arduino IDE中编写代码,使用提供的库函数来初始化和操作I2C端口扩展器。示例代码如下: ```cpp

include

include

include

include

include

define I2CADDR 0x24 // MCP23017

TwoWire * jwire; // 用于测试传递到备用I2C端口的引用(例如MKR ZERO) shrMC17 prt( I2CADDR, MCP23017, jwire ); // 创建shrPort对象,使用MCP扩展器 Keypad_exp kpd( &prt, makeKeymap(keys), rowPins, colPins, ROWS, COLS); // 初始化键盘 flashPin_exp pin7( &prt, 7, LOW, 250); // 创建flashPin LiquidCrystal_exp lcd( &prt, 16, 2 ); // 初始化LiquidCrystal_exp,16列,2行

void setup() { Serial.begin( 9600 ); while( !Serial ){ / 等待 / } jwire->begin( ); prt.begin( ); kpd.begin( ); for( byte ix=0; ix < 8; ix++ ) { // LCD假设其端口设置为输出 prt.pin_mode( ix, OUTPUT ); } lcd.init( ); // LCD启动 lcd.begin( 16, 2 );
lcd.print( "Hi Joe exp" ); // LCD操作 lcd.setCursor( 0, 1 ); lcd.backlight( ); } ``` 3. 上传代码:将代码上传到Arduino板。 4. 测试功能:通过测试代码来验证I2C端口扩展器的功能。

通过以上步骤,即可在Arduino项目中使用I2C端口扩展器,并实现复杂的I/O控制功能。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】