0

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

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

有些不明白。

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

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

我是C&C++的超级新手,希望大家帮忙解释一下。

非常感谢=]

行 (50) 布尔开始(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

4

1 回答 1

1

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;

于 2020-10-24T15:18:17.093 回答