Forum: Mikrocontroller und Digitale Elektronik SSD1306 OLED 32 * 128 pix dubioses Verhalten


von Hanns-Jürgen M. (yogy)


Lesenswert?

Hallo zusammen,
ich habe mir zwei kleine 0,99! OLED-Displays „zum Spielen“ bei Funduino 
gekauft. Diese möchte ich mit Atmel-Studio und einer Arduino Nano-HW zu 
spielen bringen. Eigentlich bin ich auf den richtigen Weg, denke ich. 
Als Hilfe/Anleitung habe  das SSD1306 Datasheet sowie das Beispiel bei 
GITHUB unter https://github.com/HarryLipphaus/DisplayKit benutzt.

Als Erstes möchte ich das Display löschen, indem ich wie im Beispiel 
0x00 zum Display sende. Nur da wird nur das halbe Display gelöscht, die 
zweite (untere) Hälfte zeigt noch „Rauschen“. Meine Untersuchungen haben 
gezeigt, das von den gesendeten Bytes nur jeweils die ungeraden bits 
(Bit 1,3,5,7) dargestellt werden, die Zeilen für die Darstellung der 
geraden bits fehlen. Will sagen, daß jede Display-Page nur 4 Pixelzeilen 
beinhaltet.

Meine beiden Displays verhalten sich identisch, so daß bei mir wohl 
irgendetwas falsch ist.

Das Beispiel von Harry Lipphaus ist die das doppelt hohe 64 * 128 Pixel 
Display,  Ich habe also in meiner SW  die Größe OLED_HEIGHT von 64 auf 
32 verringert, aber daran liegt es nicht.

Zum Testen habe ich nach dem Löschen des (halben) Displays nur in der 
Ersten Page 64 bits mit unterschiedlichen Werten beschrieben. 
Beschreiben mit 0xFF ist dann nur 4 Pixel hoch.

Wo könnte mein Fehler liegen? Einer 'ne Idee? Wäre super?

Danke, Yogy

von Stefan F. (Gast)


Lesenswert?

Hanns-Jürgen M. schrieb:
> Wo könnte mein Fehler liegen? Einer 'ne Idee? Wäre super?

Ich kann nicht erkennen, was du auf deinem Computer hast. Du bist zu 
weit weg.

> Als Erstes möchte ich das Display löschen

Als erstes musst du es richtig initialisieren.

Vergleiche damit, der Code ist recht übersichtlich: 
http://stefanfrings.de/arduino_oled/index.html

Zeige deinen Code und deinen Schaltplan, dann kann es hier weiter gehen.

von Johannes S. (Gast)


Lesenswert?

für soetwas gibt es bei github die issues, da kann man Probleme oder 
Verbesserungsvorschläge melden.
Wenn man selber etwas verbessern oder korrigieren möchte, dann ist es 
sinnvoll die Abläufe mit Fork, Projekt klonen und Pull Requests zu 
nutzen. Da muss man sich einmal durchhangeln, so schwer ist das nicht. 
Änderungen per zip hin- und herschicken oder posten ist nicht 
nachvollziehbar und gehört mittlerweile verboten.

von Hanns-Jürgen M. (yogy)


Lesenswert?

Liebe Gemeinde, Problem gefunden und gelöst.

Ich habe mir die Initialisierungsbefehle (siehe Stefanus, zweiter 
Beitrag) angesehen und mit meinen (von Harry Lipphaus) verglichen.

Die Version von Stefanus unterscheidet zwischen 32,64 und 94 
pixelzeiligen Displays, die von Harry Lipphaus ist nur für 64 Zeilen 
ausgelegt, und ich hatte nur den Befehl 0xA8  (multiplex ratio) geändert 
und den Befehl 0XDA (com pins hardware configuration) nicht angerührt. 
DAS war der Fehler von mir. Nun funzt das Display und ich kann weiter 
"spielen".

Danke und viele Grüße

Yogy

von Stefan F. (Gast)


Lesenswert?

96 ist die Breite! 96 und 128.

Abgesehen davon: Freut mich dass ich helfen konnte.

von Hanns-Jürgen M. (yogy)


Lesenswert?

Stefan ⛄ F. schrieb:
> 96 ist die Breite! 96 und 128.

Sorry, "übergesehen". Steht ja auch deutlich dort

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.