gpt4 book ai didi

arduino - 如何通过 adafruit mcp23017.h 库使用多个 mcp23017 芯片

转载 作者:行者123 更新时间:2023-12-01 16:07:37 27 4
gpt4 key购买 nike

我一直在为我的 arduino ATMega2560 试验 I2C 和 mcp23017 IO 扩展器芯片,因为我宁愿使用 arduino 本身上的 IO 来做其他事情,我只是想知道如何使用 adafruit mcp23017.h 库,但不能弄清楚如何寻址多个 mcp23017 芯片以及如何单独使用这些引脚,这是我编辑的按钮库中的代码。

我希望能够对各个芯片和引脚进行寻址,如果在代码中连接并寻址多个芯片,我不太确定在设置中 IO 的引脚模式是否按顺序从 0 上升到 15。例如,如果第一个芯片被寻址为 0x20,并且 IO 编号计数为 0 - 15,如果我添加另一个芯片并将其寻址为 0x21,则该计数将从 0 - 15 变为 0 - 31。

#include <Wire.h>
#include "Adafruit_MCP23017.h"

//pin 1 and 0 are mcp pins not arduino IO pins

Adafruit_MCP23017 mcp;

void setup() {
mcp.begin(); // use default address 0

mcp.pinMode(0, INPUT);
mcp.pinMode(1, OUTPUT);
Serial.begin(9600);

pinMode(13, OUTPUT); // use the p13 LED as debugging
}



void loop() {
// The LED will 'echo' the button
digitalWrite(13, mcp.digitalRead(0)); //Writes pin 13 to the reading of pin 0
mcp.digitalWrite(1, mcp.digitalRead(0)); //Writes pin 1 to the reading of 0
if(mcp.digitalRead(1) == HIGH){ //if pin 1 == high serialprint led whent high
Serial.println("Led whent HIGH");
}
}

最佳答案

每个芯片必须有唯一的地址,这可以根据 Microchip's manual 实现。第 8 页。因此,首先,您应该在硬件布局中设置不同的地址。

您还应该为要使用的每个芯片创建一个 Adafruit_MCP23017 对象,并在代码中设置相应的地址。

在这种情况下,所有芯片的引脚的地址范围为 0-15。要更改 pin 的状态,您应该引用特定实例。

<小时/>

更新

这是您的起点

#include "Adafruit_MCP23017.h"
Adafruit_MCP23017 mcp1;
Adafruit_MCP23017 mcp2;
Adafruit_MCP23017 mcp3;
#define addr1 0x00
#define addr2 0x01
#define addr3 0x02
void setup() {
mcp1.begin(addr1);
mcp2.begin(addr2);
mcp3.begin(addr3);
}

void loop() {


}

关于arduino - 如何通过 adafruit mcp23017.h 库使用多个 mcp23017 芯片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36954218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com