我一直在爲我的arduino ATMega2560試驗I2C和mcp23017 IO擴展器芯片,因爲我寧願使用arduino上的IO來處理其他事情,我只是弄清楚如何使用adafruit mcp23017.h庫並且不能找出如何解決多個mcp23017芯片以及如何單獨使用這些引腳,這是我編輯過的按鈕庫中的代碼。如何使用adafruit mcp23017.h庫中的多個mcp23017芯片
如果多個芯片連接並在代碼中尋址,我希望能夠解決單個芯片和引腳的問題,我不太確定如果在IO設置中IO的引腳模式從0開始依次遞增。例如,如果第一個芯片被尋址爲0x20,並且如果我添加另一個芯片並將其編址爲0x21,則IO編號計數爲0 - 15,則該計數將從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");
}
}
* 「如果我說和解決的另一個芯片爲0x21將是數去從0 - 15 0 - 31。」 *如果您有多個芯片可用,爲什麼不試試呢? – jDo
以及我不知道如何解決芯片爲0x20或0x21通過頭庫代碼尋找庫似乎設置默認地址0x20 – ChrisPlusPlus
好吧,我從來沒有使用mcp23017與arduino之前,但在樹莓pi,使用'i2c-tools'軟件包中的'i2cset'很容易手動寫入輸入/輸出寄存器,這些寄存器決定了存儲區A和存儲區B的方向。然後,您可以將任意一側的所有引腳設置或讀入一個寫/一個字節。無論如何,請檢查這一行:'mcp.begin(); //使用默認地址0'。它給我的印象是你可以提供一個編號/一個地址給'mcp.begin();';例如'mcp.begin(0x20);'或'mcp.begin(32);' – jDo