OLED-Display Angaben korrekt? (gelöst)

Hi @Felix

auf Deinem Github- Platz habe ich als Beispielprogramm für eine clevere Displayansteuerung das Programm:
senseBox_full_setuo.ino
gefunden und studiert.
Die Aufteilung des Displays ist wirklich toll.
Nur bei den Ausgaben, bei denen 2 Werte ausgegeben werden z.B Temperatur und Feuchte sowie Helligkeit und uv, fehlt ddie Anzeige des 2. Werts fast vollständig, man sieht nur die die beiden ersten Pixelzeilen.
Laut den technischen Angwbwn zu Display: TestSize (1)= 8 Pixel, TestSize(2) = 16 Pixel müssten die beiden Ausgaben vollständig auf das Display passen. Überschlägig müsste der 2, Wert bis Pixelzeile 56 gehen, was noch ausreichen Platz bis zu 64 Pixel in Y-Richtung gewährt.
Die Realität sieht aber anders aus. Der 2. Wert isz bis auf die beiden ersten Zeilen komplett unsichtbar!
Sind die Angaben zur Auflösung des Displays (128 x 64 Pixel) korrekt?
Ebenso die Angeben zur Größe der Zeichen (8 bzw. 16 Oixel)?

In folgendem Code habe ich die printOnDisplay Funktion aus dem Sketch übernommen.

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include "SenseBoxMCU.h"

#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

void setup() {
  senseBoxIO.powerI2C(true);
  delay(2000);
  display.begin(SSD1306_SWITCHCAPVCC, 0x3D);
  display.display();
  delay(100);
  display.clearDisplay();
}

void loop() {

  printOnDisplay("Temperatur", String(21.3), "*C", "rel. Luftfeuchte", String(55.6), "%");

}

void printOnDisplay(String title1, String measurement1, String unit1, String title2, String measurement2, String unit2) {
  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.setTextColor(WHITE, BLACK);
  display.println(title1);
  display.setCursor(0, 10);
  display.setTextSize(2);
  display.print(measurement1);
  display.print(" ");
  display.setTextSize(1);
  display.println(unit1);
  display.setCursor(0, 30);
  display.setTextSize(1);
  display.println(title2);
  display.setCursor(0, 40);
  display.setTextSize(2);
  display.print(measurement2);
  display.print(" ");
  display.setTextSize(1);
  display.println(unit2);
  display.display();
}

Dabei bekomme ich folgendes Ergebnis:

Komisch bei mir sieht das so aus:

bzw. so

mein Code sieht so aus:

 void printOnDisplay(String title1, String measurement1, String unit1, String title2, String measurement2, String unit2) {
  display.clearDisplay();
  display.setCursor(0, 0);
  display.setTextSize(1);
  display.setTextColor(WHITE, BLACK);
  display.println(title1);
  display.setCursor(0, 10);
  display.setTextSize(2);
  display.print(measurement1);
  display.print(" ");
  display.setTextSize(1);
  display.println(unit1);
  display.setCursor(0, 30);
  display.setTextSize(1);
  display.println(title2);
  display.setCursor(0, 40);
  display.setTextSize(2);
  display.print(measurement2);
  display.print(" ");
  display.setTextSize(1);
  display.println(unit2);
  display.display();
}

Hi @altprog,

hast du zufällig die Adafruit SSD1306 Display Library (https://github.com/adafruit/Adafruit_SSD1306) manuell nachinstalliert, sodass nicht die Version aus dem Board Support Package verwendet wird? Dort wird nämlich in der Standardversion von einem Display mit 128x32 Pixeln ausgegangen.

Beste Grüße
Mario

Hi @mario,

Du hast den Nagel auf den Kopf getroffen. Die Library aus dem Ordner entfernt und neu kompiliert und schon war das Ergebniss perfekt.
Vielen Dank für den Tip.

Beste Grüße
Altprog