我正在使用“ SparkFun Qwiic键盘”,对于键盘库有些不明白

问题描述

我正在使用“ SparkFun Qwiic键盘”,

我正在学习“ SparkFun”提供的Arduino_Library。

有些不明白。

在“ SparkFun_Qwiic_Keypad_Arduino_Library.h”中,第50和62行,

其中的“ TwoWire * _i2cPort”是什么?目的是什么?

我是C和C ++的超级新手,希望每个人都能帮助解释。

非常感谢您=]

第(50)行boolean begin(TwoWire&wirePort = Wire,uint8_t deviceAddress = QWIIC_KEYPAD_ADDR);

行(61)私人: 行(62)TwoWire * _i2cPort;

https://github.com/sparkfun/SparkFun_Qwiic_Keypad_Arduino_Library/blob/master/src/SparkFun_Qwiic_Keypad_Arduino_Library.h

解决方法

Sparkfun Qwiic系列组件使用I2C协议进行通信。因此,传感器,执行器,显示器未直接连接至Arduino的数字或模拟引脚,而是全部具有使用I2C协议与MCU进行通信的芯片。

I2C使用两条线,并且是一条总线,每个设备都有其地址。这样可以链接Qwiic组件。

出于许可原因,Arduino将I2C库命名为“ Wire”,而不是I2C。 Wire库定义了一个名为TwoWire的类,并创建了TwoWire类的全局对象。该全局对象名为Wire。

Qwiic库在您的草图的setup()中使用begin()函数进行初始化,这在Arduino中很常见。在这种情况下,begin()函数具有可选参数。

boolean begin(TwoWire &wirePort = Wire,uint8_t deviceAddress = QWIIC_KEYPAD_ADDR);

参数是可选的,因为提供了默认值。第一个可选参数是对TwoWire类型的对象的引用&,因此TwoWire&。默认值为我之前提到的全局Wire对象。

begin()函数将TwoWire实例用于具有多个I2C外设的Arduino,以便能够使用Wire1。

begin()函数存储一个指向应使用的TwoWire对象的指针。他们将指针变量_i2cPort命名为TwoWire *_i2cPort;