Forum: PC-Programmierung Raspberry Pi Pico: OLED SSD1306 via C ansteuern


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Florian J. (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

ich bin auf der Suche nach Informationen bzgl. Ansteuerung OLED SSD1306 
auf einem Raspberry Pi Pico.

Und zwar nicht mit MicroPython (hierüber existieren sehr viel 
Informationen), sondern mit C.

Vorab: reines Kompilieren und "Anschaulichmachen" des Beispiels aus den 
Pico SDK Examples ist ja simpel.

https://github.com/raspberrypi/pico-examples/tree/master/i2c/oled_i2c

Wie auf dem angehängten Foto zu erkennen stellt er drei kleine 
Raspberries dar (die von links nach rechts auf dem Bildschirm wandern).

Mein Problem ist, dass ich ausser diesem einen Beispiel nirgendwo 
weitere erhellende Beispiele finden kann.

Ich mag jenen Code nicht besonders da er lang und kompliziert ist und 
ich zu anfangs eigentlich nur schlichten Text darstellen will.

Also was ich bräuchte wäre ein simples "Hello World" Programm.

Hätte da jemand einen Link zu einem Repository, Forumsbeitrag etc.?

Danke!

PS1: Hier kurz und prägnant was ich in MicroPython tippen würde.
1
(...)
2
from ssd1306 import SSD1306_I2C
3
(...)
4
i2c = I2C(0,sda=Pin(0),scl=Pin(1),freq=40000)
5
oled=SSD1306_I2C(128,64,i2c)
6
oled.fill(0)
7
oled.show()
8
oled.text("Hello",0,0)
9
oled.text("World",0,10)
10
(...)

PS2: Auch das Datenblatt hilft mir eher nicht.

https://cdn-shop.adafruit.com/datasheets/SSD1306.pdf

von Zeno (Gast)


Lesenswert?

Ach ja, wieder mal so ein Maker der denkt ist ja alles so simpel - 
zusammen stöpseln, etwas Copy & Paste und schon läufts. Nein so einfach 
ist es eben nicht. Man muß das schlichtweg lernen. Das passiert in Lehre 
oder beim Studium, wenn man dies zu seinem Beruf machen möchte. Für's 
Hobby geht das mit Lesen, Lesen nochmals Lesen und zwar Fachliteratur, 
Datenblätter etc. und dazu ne gehörige Portion Schweiß. Und ja auch 
Tiefschläge gehören da zum Geschäft, die sind aber in alle Regel äußerst 
lehrreich.

von Florian J. (Gast)


Lesenswert?

Naja, das Gute an meinem Aufbau ist: es läuft schon.

Codebeispiele im beschriebenen Kontext wären allerdings dennoch 
hilfreich. Die gibt es nach meiner Rechereche nämlich nicht. Aber 
vielleicht habe ich auch was übersehen.

Ansonsten finde ich es durchaus auch selber heraus, sow wie in der 
Vergangenheit auch.

Eine Mentalität wie du sie hier zur Schau stellst mache ich mir dennoch 
nicht zu Eigen. Ich freue mich eigentlich immer mein (gewiss begrenztes) 
Wissen zu teilen, auch mit Leuten wie dir.

von asd (Gast)


Lesenswert?

Kann es sein dass dein Problem in einem Denkfehler liegt? Ich hab nur 
kurz drüber geschaut aber es wirkt auf mich so als würde der "Treiber", 
bzw. das Code-Beispiel nur Pixel-Grafik unterstützt, und davon ausgeht 
dass du Pixel setzen und löschen willst. Von Text habe ich in dem ganzen 
Code nichts gesehen.
Schaut also so aus als müsstest du Text selber in Pixel umsetzen und auf 
das Display kopieren. Einen Diskussion um Pixel-Fonts in verschiedenen 
Größen findest du hier:
Beitrag "Re: 6-8px Win1252 Font"

von Olaf (Gast)


Lesenswert?

> Ich mag jenen Code nicht besonders da er lang und kompliziert ist und
> ich zu anfangs eigentlich nur schlichten Text darstellen will.

Das liegt daran das das gesamte Framework vom Pi Pico von vorne bis 
hinten ein ueberkomplizierter Schmerz im Arsch ist. Ich musste lange 
nicht mehr so kotzen wie beim lesen dieses Sourcecodes. Sowas will man 
einfach nicht in seinen Projekten haben, es tut weh.

Hier liefert dir jemand ein paar Beispiele wie es ohne den Kram geht:

https://github.com/dwelch67/raspberrypi-pico

Fuer das ansprechen der I2C-Schnittstelle und danach deines Oleds liesst 
du dann einfach nur die Datenblaetter und programmierst das eben runter. 
Keine grosse Sache. Hat bei mir 2-3h gedauert. Vorausgesetzt natuerlich 
du kannst schon programmieren und weisst das damit was anderes gemeint 
ist als aus dem Internet Source zu kopieren.

Olaf

von Olaf (Gast)


Angehängte Dateien:

Lesenswert?

Vielleicht noch mal einen Tip fuer diejenigen die einen Pico
als richtigen Microcontroller ohne das aufgeblasene System vom 
Hersteller
nutzen wollen. Der von mir oben gepostete Link zeigt nicht nur wie man
seinen eigenen Source viel einfacher uebersetzt, er liefert auch das
Tool um aus einem hex/bin das uf2 File zu erzeugen das man braucht um
sein Programm direkt auf den Pico kopieren zu koennen!

Man wird allerdings schnell feststellen das dies auf dauer nervig ist 
und man gerne eine echten Debugger verwenden will.

Es gibt von Arm eine definierten Stecker fuer das Debuging der schoen
klein ist:

https://www.keil.com/support/man/docs/jlink/jLink_connectors.htm

Den kann man sich auch gut selber auf den Pico kleben. Siehe Bild.

Bevor man das tut sollte man allerdings pruefen ob die eigene JLink
Hardware modern genug ist um den Pico zu unterstuetzen. Das geht
naemlich nicht mit jedem JLink! Es kommt da auf die Hardwarerevion
an und nicht ob man einen Ultra oder EDU hat!

Olaf

von Oliver S. (oliverso)


Lesenswert?

Olaf schrieb:
> Hier liefert dir jemand ein paar Beispiele wie es ohne den Kram geht:
>
> https://github.com/dwelch67/raspberrypi-pico

Und wie geht damit die gewünschte Textausgabe per printf ?

Das eigentlich Problem des TO ist nicht unschöner Code, sondern fehlende 
Funktionalität. Das löst dein link auch nicht.

Das hier ist das Problem:

asd schrieb:
> Schaut also so aus als müsstest du Text selber in Pixel umsetzen und auf
> das Display kopieren.

Oliver

von Olaf (Gast)


Lesenswert?

> Und wie geht damit die gewünschte Textausgabe per printf ?

Man programmiert es sich. Wobei ich gerne mein eigenes printf nutze das 
ich seit 20Jahren verwende. Einfach reinkopiert und fertig.

Allerdings gibt es natuerlich auch ein printf in den Libaries des 
Compilers. Bei so einem fetten Controller kann man ja mal schludrig 
sein. Das muss man sich halt _write und tiefer selber programmieren. 
Finde ich sowieso besser weil man dann seine eigenen Fonts verwenden 
kann.

Olaf

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.