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