Código para OLED

Hola a todos!

Me presento ya soy nuevo por aquí, me acabo de registrar y solo llevo unos días con el tema Arduino.

El caso es que tengo un proyecto personal en mente, me gusta mucho "cacharrear" con todo tipo de cosas y ahora le ha tocado el turno a esto.

Quizá os parecerá sencillo pero a mi por momentos, aunque aprendo muy rápido, hay cosas que se me escapan.

Estoy intentando hacerme un Termómetro digital partiendo de una sonda SD18B20, he conseguido de tutoriales un código que me funciona ya que muchos otros que había probado siempre me daban algún error y no conseguía nada en concreto, ahora con éste si puedo ver en el Monitor Serie que todo funciona y que la sonda mide bien la temperatura.

Mi gran problema es que no consigo mostrar esa información en la pantalla OLED, no se qué código tengo que escribir ni donde lo colocar :disappointed_relieved: :disappointed_relieved:
tengo las librerias tanto para la pantalla OLED 0.96" SD1306 y demás pero eso, no se qué código tengo que escribir.

Si alguien me pudiera echar un cable, solo decirme por ejemplo... tienes que empezar con un void loquesea (); ... y ya iré yo trasteando que es lo que me gusta, pero después de unos días me veo muy perdido y por eso recurro a ustedes.

Gracias de antemano.

Retomo el hilo a ver si alguien me puede echar un cable, estuve unos meses parado pero quería retomar con el tema del termómetro digital.

El caso es que ahora en vez de un OLED de 0.96" tengo uno de 0.49" y ya he conseguido que los datos del Termómetro me aparezcan en la pantalla, para mi un paso muy grande.
Pero como he ido haciendo prueba y error con diferentes códigos que he ido encontrando tengo un caos importante y estoy seguro que sobra mucho código y a parte me gustaría cambiar algunas cosas y no se como.

Os dejo una foto de como lo tengo montado y el codigo.

Como veis me marca solo la Temperatura, ( 21.50 ) y me gustaría cambiar la visualización en pantalla y que me mostrase un solo decimal, o sea 21.5, y también el símbolo de los Grados º detrás ( 21.5º )

Sabéis si para esta pantalla Oled de 0.49 se pueden poner otros tamaños de caracteres?? está a tamaño 2 y me parece muy grande pero si pongo tamaño 1 es muy pequeño. Me gustaría poner un encabezado con texto Temperatura, y debajo ésta mostrada en digitos pero eso, a tamaño 1 lo veo demasiado pequeño y a 2 no cabe todo.

Os dejo a continuación el código que tengo escrito.

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#include <OneWire.h>
#include <DallasTemperature.h>

const int oneWirePin = 5;
 
OneWire oneWireBus(oneWirePin);
DallasTemperature sensor(&oneWireBus);



#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif


void setup() {
  // put your setup code here, to run once:

  // by default, we'll generate the high voltage from the 3.3v line internally! (neat!)
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3D (for the 128x64)
  // init done

  // Clear the buffer.
  display.clearDisplay();

  Serial.begin(9600);
  sensor.begin();
}

void loop() {
  // put your main code here, to run repeatedly:
  float temp;
Serial.println("Leyendo temperaturas: ");
  sensor.requestTemperatures();

 Serial.print("Temp. Visor: ");
   Serial.print(sensor.getTempCByIndex(0));
   Serial.println(" ºC");
  
  display.clearDisplay(); // clear previous buffered data

  display.setTextColor(WHITE);

  // header
  display.setCursor(0,0);
  display.setTextSize(1);
  display.println("Temp. VISOR");

 
  // temperature
  display.setCursor(35,18);
  display.setTextSize(2);
  display.println(sensor.getTempCByIndex(0));
  display.println(" º");
  display.display(); // update display

  delay(1000); // temp update interval
}

No creo que esto se visualice asi

Serial.println(" ºC");

y lo mismo con esto o si

display.println(" º");

El código si esta resuelto solo debes eliminar o comentar los Serial.print.