Problema ao usar RTC e OLED juntos

Estou tentando usar um display OLED juntamente com um RTC DS1307, quando habilito os dois juntos nenhum deles funciona. Se habilito somente o RTC funciona ok, se habilito somente o display OLED funciona ok. Ambos usam as portas SDA e SCL.

O código que estou usado é:

#include <DHT.h>
#include <U8g2lib.h>
#include <RtcDS1307.h>
#include <Wire.h>

#define portaVolt A0
#define DHTTYPE DHT11
#define DHTPIN A1

DHT dht(DHTPIN, DHTTYPE);
U8G2_SSD1306_128X32_UNIVISION_1_SW_I2C u8g2(U8G2_R0, SCL, SDA, 0);
RtcDS1307 Rtc(Wire);

void setup() {
pinMode(portaVolt,INPUT);
Serial.begin(9600);
//Wire.begin();
//Rtc.Begin();
u8g2.begin();
}

void loop() {
//RtcDateTime now = Rtc.GetDateTime();
float ler = analogRead(portaVolt);
float volts = ((ler*5)/1023)*3.5;
String sVolts = String(volts);
String msgVolts = "Volts: " + sVolts;
char msgCVolts[20];
msgVolts.toCharArray(msgCVolts,20);
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,15,msgCVolts);
}while ( u8g2.nextPage() );
delay(5000);
float h = dht.readHumidity();
float t = dht.readTemperature();
String sHumid = String(h);
String sTemp = String(t);
String msgTemp = "Temp.: " + sTemp;
String msgHumid = "Hum.: " + sHumid + “%”;
char msgSTemp[40];
char msgSHumid[40];
msgTemp.toCharArray(msgSTemp,40);
msgHumid.toCharArray(msgSHumid,40);
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_ncenB14_tr);
u8g2.drawStr(0,14,msgSTemp);
u8g2.drawStr(0,32,msgSHumid);
}while ( u8g2.nextPage() );
delay(5000);

}

O que fiz de errado ou o que poderia fazer para resolver isso?

Desde já obrigado!!!

Eu suponho que os settings I2C do LCD e do RTC colidam uma com a outra, o que é estranho.

Por outro lado, esse código para fazer interface do display parece-me um tanto estranho.

bubulindo: Eu suponho que os settings I2C do LCD e do RTC colidam uma com a outra, o que é estranho.

Por outro lado, esse código para fazer interface do display parece-me um tanto estranho.

Curioso mesmo... Mas eu rodei um programa para identificar o endereço de ambos e percebi que o RTC usa a porta 0x68 e o OLED 0x3C. Então teoricamente não tem conflito de endereços.

Individualmente funcionam ok, em conjunto travam...

O que poderia ser?

O que acontece ao certo quando metes os dois a funcionar?

O que eu acho que está a acontecer é que a biblioteca do RTC usa o hardware I2C presente no Arduino e o display faz o que é chamado de bitbang. Isto causa problemas entre os dois.

Se ligares o display noutros dois pinos e configurares correctamente, é bastante provável que funcione correctamente. Já experimentaste outra bibliotecas como a da Adafruit, por exemplo?