MPR121 Breakout 是一個 接近 電容式 觸摸感測器,連接到arduino、esp32等單片機,可以用來做一些 觸摸 感應的小玩意。 他有12個觸摸點,使用 i2c 協議來操控,非常方便。 預設情況下,Add 引腳 接地了,板子的i2c地址是 0x5A,如果你要同時連接多個 板子,那麼 ...
MPR121 Breakout 是一個 接近 電容式 觸摸感測器,連接到arduino、esp32等單片機,可以用來做一些 觸摸 感應的小玩意。
他有12個觸摸點,使用 i2c 協議來操控,非常方便。
預設情況下,Add 引腳 接地了,板子的i2c地址是 0x5A,如果你要同時連接多個 板子,那麼 i2c 地址就衝突了。你只能使用i2c復用板來解決了。
但是,但是。。。。。板子的設計師考慮的很周到,可以短接引腳獲取不同的地址,點贊!
1 The MPR121 ADDR pin is pulled to ground and has a default I2C address of 0x5A 2 You can adjust the I2C address by connecting ADDR to other pins: 3 4 ADDR not connected: 0x5A 5 ADDR tied to 3V: 0x5B 6 ADDR tied to SDA: 0x5C 7 ADDR tied to SCL: 0x5D
簡單說,add連到3v3後地址是0x5b,add連到sda後地址是0x5c,add連到scl後地址是0x5d
具體怎麼操作呢,看下圖,箭頭處就是add引腳跳線的地方。
將下圖箭頭所指橫線切斷,可以用小刀、美工刀,動作慢點,切割後用萬用表測試一下,兩端不通電即可。
然後將add的右側,焊接一個飛線連接到3v3、sda、scl 三個中的一個即可。
不焊接也行,直接在add引腳插一個杜邦線,另外一端插到3v3、sda、scl 三個中的一個即可。
下麵是arduino獲取2個板子i2c地址的測試代碼:
#include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("\nI2C Scanner"); Serial.println("Scanning..."); delay(2000); } void loop() { int nDevices; nDevices = 0; byte error, address; for (address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) { Serial.print("0"); } Serial.println(address, HEX); nDevices++; } else if (error == 4) { Serial.print("Unknown error at address 0x"); if (address < 16) { Serial.print("0"); } Serial.println(address, HEX); } } if (nDevices == 0) { Serial.println("No I2C devices found\n"); } else { Serial.println("done\n"); } Serial.print("i2c devices found:"); Serial.println(nDevices); delay(5000); }
運行結果:
完美!最多可接4個板子,夠了夠了!