SSD1306 + OLED = KO

Muy buenas, tengo un arduino nano conectado a un sensor de temperatura DS18b20 y también a una pantalla SSD1306 OLED 127x64 versión 4 pines usando la librería adafruit GFX. Tengo el siguiente problema, cuando ejecuto código con este encabezado:

//-------------------------------------------------------------------------------
#include <SPI.h>  
#include <Wire.h>  
#include <Adafruit_GFX.h>     
#include <Adafruit_SSD1306.h> 
#include <DallasTemperature.h>  //temperatura
#include <OneWire.h>  //temperatura 

#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
 
#define OLED_RESET -1  
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);  
//-------------------------------------------------------------------------------

todo va como un tiro, hago dibujitos, letras y la tribuna me aplaude, pero cuando hago este otro encabezado:

//-------------------------------------------------------------------------------
#include <SPI.h>  
#include <Wire.h>  
#include <Adafruit_GFX.h>     
#include <Adafruit_SSD1306.h> 
#include <DallasTemperature.h>  //temperatura
#include <OneWire.h>  //temperatura 
 
#define SCREEN_WIDTH 128 
#define SCREEN_HEIGHT 64 
#define OLED_RESET -1   
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,&Wire,OLED_RESET); 
//-------------------------------------------------------------------------------

se cuelga la pantalla y el programa, es como si se produjera un interbloqueo (he hecho una traza y el parón se produce al entrar a la primera instrucción del loop() que tiene que ver con la pantalla: display.clearDisplay().

Cuando sustituyo la linea:

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT,&Wire,OLED_RESET);

por:

Adafruit_SSD1306 display(OLED_RESET);

todo funciona mas o menos (se desconfigura la pantalla pero funciona).

Mi conclusión prematura es que tengo un conflicto temperatura-pantalla por la librería Wire.h o que la dirección de memoria &Wire váyase a saber que contiene.

He intentando muchas cosas pero la función Adafruit_SSD1306 display no creo que admita mas de 2 sobrecargas (las que he mostrado) tampoco he encontrado información al respecto. También hay por ahí algún código que funciona con el sensor de temperatura y algún OLED pero no es igual, no usa dibujitos y los necesito (no puedo defraudar a la hinchada). Por otro lado esta parte dentro del código: display.begin(SSD1306_SWITCHCAPVCC, 0x3C); no creo que sea la responsable porque responde bien en las pruebas que he hecho.

La pregunta es simple, ¿alguien ha tenido este problema o alguno parecido entre el sensor de temperatura y algún OLED que pueda orientarme? También me ayudaría si alguien controla la función Adafruit_SSD1306 display() y conoce bien sus interiores.

Gracias

Por si a alguno le sirve, he reorientado el programa, he trabajado sin usar ni <DallasTemperature.h> ni <OneWire.h> y haciendo un poco de lucha grecorromana con el código y la memoria, me ha terminado funcionando, aunque sigo desconociendo el motivo del colapso anterior, de hecho he encontrado otras víctimas del síndrome ssd1306-oled que tampoco han dado con una solución. En fin, que aunque me ha quedado un código para 7 arduinos se pudo solucionar, de modo que... seguimos para bingo.

Lo que pasa es que dallastemperature consume 750mseg y algo de la rutina de la pantalla debe usar algun timer que no puede refrescarse trminando en un watchdog. Busca dallastemperature mon blocking