1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- /*
- Description: Use PaHUB Unit to expand multiple I2C devices and scan the I2C addresses of the slave devices in order.
- */
- #include <Wire.h>
- #include <M5Stack.h>
- #include "ClosedCube_TCA9548A.h"
- #define FRONT 2
- #define X_LOCAL 100
- #define Y_LOCAL 35
- #define X_OFFSET 160
- #define Y_OFFSET 34
- #define PaHub_I2C_ADDRESS 0x70
- ClosedCube::Wired::TCA9548A tca9548a;
- void setup()
- {
- M5.begin();
- M5.Power.begin();
- Wire.begin();
- M5.Lcd.fillScreen(TFT_BLACK);
- tca9548a.address(PaHub_I2C_ADDRESS);
- M5.Lcd.setTextFont(4);
- M5.Lcd.setCursor(70, 0, 4);
- M5.Lcd.setTextColor(YELLOW,TFT_BLACK);
- M5.Lcd.println(("PaHUB Example"));
- M5.Lcd.setTextColor(TFT_WHITE,TFT_BLACK);
-
- }
- void PaHUB(void){
- uint8_t returnCode = 0;
- uint8_t address;
- for( uint8_t channel=0; channel<TCA9548A_MAX_CHANNELS; channel++ ) {
- M5.Lcd.setCursor(X_LOCAL, Y_LOCAL + Y_OFFSET*channel , FRONT);
- M5.Lcd.printf(" ");
- M5.Lcd.setCursor(X_LOCAL, Y_LOCAL + Y_OFFSET*channel , FRONT);
- M5.Lcd.printf("CH%d : ",channel);
- returnCode = tca9548a.selectChannel(channel);
- if( returnCode == 0 ) {
- for(address = 0x01; address < 0x7F; address++ ) {
- Wire.beginTransmission(address);
- returnCode = Wire.endTransmission();
- if (returnCode == 0) {
- Serial.print("I2C device = ");
- M5.Lcd.printf("0X%X ",address);
- }
- }
- }
- delay(200);
-
- }
- }
- void loop()
- {
- PaHUB();
- }
|