Need help programming two Adafruit TCA9548A

Post here about your Arduino projects, get help - for Adafruit customers!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
User avatar
pepelotte
 
Posts: 2
Joined: Sat Feb 17, 2018 10:59 am

Need help programming two Adafruit TCA9548A

Post by pepelotte »

Hi everyone,

i bought two Adafruit TCA9548A and 11 oled´s. i placed 8 to the first multiplexer and 3 to the second multpiplexer. if i use the sample code from here
https://learn.adafruit.com/adafruit-tca ... g-and-test
i can display values on controller1 or controller2 by setting manually the TCAADDR to 0x70 or 0x71. But i don´t understand how to send commands to both multiplexers. Can any one correct my code here?


Code: Select all

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
extern "C" { 
#include "utility/twi.h"  // from Wire library, so we can do bus scanning
}
#define TCAADDR0 0x70
#define TCAADDR1 0x71
void tcaselect0(uint8_t i) {
  if (i > 7) return;
  DisableCon(1);
  Wire.beginTransmission(TCAADDR0);
  Wire.write(1 << i);
  Wire.endTransmission();  
}
void tcaselect1(uint8_t i) {
  if (i > 7) return;
  DisableCon(0);
  Wire.beginTransmission(TCAADDR1);
  Wire.write(1 << i);
  Wire.endTransmission();  
}
void DisableCon(uint8_t i) {
    if (i == 0 ) {
      Wire.beginTransmission(TCAADDR0);
    }
    if (i == 1) {
      Wire.beginTransmission(TCAADDR1);
    }
    Wire.write(0);  // no channel selected
    Wire.endTransmission();
}
#define OLED_RESET 13 // not used / nicht genutzt bei diesem Display
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  // Init Display Controller 0 - Display 0
  tcaselect0(0);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);
  
  // Init Display Controller 0 - Display 1
  tcaselect0(1);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 2
  tcaselect0(2);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 3
  tcaselect0(3);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 4
  tcaselect0(4);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 5
  tcaselect0(5);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 6
  tcaselect0(6);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 0 - Display 7
  tcaselect0(7);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);
  
  // Init Display Controller 1 - Display 0
  tcaselect1(0);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 1 - Display 1
  tcaselect1(1);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);

  // Init Display Controller 1 - Display 2
  tcaselect1(2);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  delay(100);
}

void loop() {
  delay(500);
  
  // Init Display Controller 0 - Display 0
  tcaselect0(0);
  delay(100);
  display.clearDisplay();
  display.setFont(&FreeSans9pt7b);
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0,12);
  display.println("Controller 0");
  display.setCursor(0,31);
  display.println("Display 0");
  display.display();
  delay(200);
  
    // Init Display Controller 1 - Display 0
  tcaselect1(0);
  delay(100);
  display.clearDisplay();
  display.setFont(&FreeSans9pt7b);
  display.setTextColor(WHITE);
  display.setTextSize(1);
  display.setCursor(0,12);
  display.println("Controller 0");
  display.setCursor(0,31);
  display.println("Display 0");
  display.display();
  delay(200);
  }

User avatar
pepelotte
 
Posts: 2
Joined: Sat Feb 17, 2018 10:59 am

Re: Need help programming two Adafruit TCA9548A

Post by pepelotte »

Nobody an idea?

Locked
Please be positive and constructive with your questions and comments.

Return to “Arduino”