C Bibliothek für ILI9340 / ILI9341

  • Hallo,

    wo finde ich eine Bibliothek, die ich in mein C Programm einbinden kann um ein Display mit ILI9340 oder ILI9341 Chip anzusteuern? Ich brauche nur wenige Funktionen: Display löschen, Linien zeichnen, Pixel setzen. Kein Touchscreen, nur Ausgabe.
    Es geht nicht darum dass das kleine Display den HDMI Bildschirm ersetzen soll -- der soll weiterhin dranbleiben. Das kleine Display soll ausschliesslich nur von meinem Programm aus über die SPI Schnittstelle angesteuert werden. Das Betriebsystem braucht gar nicht zu wissen dass da ein zweites Display dranhängt.

    Gruß
    Michael

    Edited once, last by maus3333 (June 23, 2016 at 5:17 PM).

  • Dann programmier dir das doch. Die Python-Lib von Adafruit zeigt ja was zu machen ist, und ist simpel genug. Wie man am Python-Modul https://github.com/doceme/py-spid…spidev_module.c fuer SPI sehen kann, ist das am Ende einfach ganz normales file-IO, plus ein ioctl-Aufruf. Gerade auch weil das Display slave-only ist. Fuer den simultanen xfer-Modus muss man ein bisschen tricksen, aber wie gesagt - den brauchst du nicht.

  • Moin Maus3333,
    wenn du die Bibliothek fertig hast, meldest du dich bitte und sagst wo man sie laden kann.

    Danke und viel Erfolg!!

    Gruss Bernd

    Ich habe KEINE Ahnung und davon GANZ VIEL!!
    Bei einer Lösung freue ich mich über ein ":thumbup:"
    Vielleicht trifft man sich in der RPi-Plauderecke.
    Linux ist zum Lernen da, je mehr man lernt um so besser versteht man es.

  • Ich hatte gehofft dass es eine einfachere Lösung gibt als alles selber zu programmieren. Die Ansteuerung ist nicht gerade einfach, wenn man mal einen Blick in die Datenblätter der Displays wirft. Es wäre schön wenn man wenigstens ein Beispiel hätte wo man sehen kann welche Befehle in welcher Reihenfolge zum Display geschickt werden müssen.

  • Der Weg ist klar, aber das ist mir im Moment zu viel Arbeit. Ich bleibe erst mal bei meiner bestehenden Lösung. Ein 256x256 Display wird durch ein kleines C# Programm auf dem PC simuliert. Datenübertragung per RS232 mit 115200 Baud, ein paar einfache Befehle für Linien, Farben und Pixel. Für das was ich sehen will reicht die Geschwindigkeit aus.

  • Ah. Vielleicht waere eine offene Frage nach Visualisierung da hilfreicher gewesen. Ich verwende dazu nanomsg als Netzwerk-Layer, mit JSON-Datenpaketen & eine D3.js-basierte Visualisierung im Browser auf meinem Mac. Damit bekomme ich meine IMU-Daten mir ~100Hz schoen dargestellt. Plus eine 3D-Ansicht der PI-Lage im Raum.


  • Ah. Vielleicht waere eine offene Frage nach Visualisierung da hilfreicher gewesen. Ich verwende dazu nanomsg als Netzwerk-Layer, mit JSON-Datenpaketen & eine D3.js-basierte Visualisierung im Browser auf meinem Mac. Damit bekomme ich meine IMU-Daten mir ~100Hz schoen dargestellt. Plus eine 3D-Ansicht der PI-Lage im Raum.

    Interessant. Aber ich hätte nicht die geringste Ahnung wie ich das machen sollte. Jeder macht es halt so wie es sich mit den eigenen Vorkenntnissen am einfachsten realisieren lässt -- das war für mich ein C# Programm. Hat mich trotzdem einen ganzen Tag gekostet, bis alle Fehler gefunden waren.

  • Wo ich die bcm2835 Bibliothek herkriege ist mir schon klar, das war ja auf der japanischen Seite angegeben:
    http://www.airspayce.com/mikem/bcm2835/bcm2835-1.42.tar.gz

    Meine Frage ist, wo ich die bcm2835.h und bcm2835.c Dateien hinkopieren muss, damit der gcc Compiler sie findet.
    Ich habe mal versucht die stdio.h auf dem Raspberry zu suchen, leider erfolglos. Sie muss vorhanden sein, denn der gcc findet sie ja. Aber wo?

    Gruß
    Michael

    P.S. Gibt's irgendo eine Beschreibung der Verzeichnisstruktur für den gcc Compiler? Wo stehen die Header-Dateien und wo die Bibliotheken?

    Edited once, last by maus3333 (June 27, 2016 at 12:52 PM).

  • Ich dachte auch eher daran, aus der Installations-Anleitung der Lib rauszulesen, wo die Library resp. die Files hingehören ...
    Sonst würde ich sagen include-files nach /usr/local/include, libs nach /usr/local/lib ...
    Die C-Datei wird wohl im aktuellen bzw. build-Verzeichnis stehen müssen, so sie nicht Bestandteil der bcm-Lib ist.

    cu,
    -ds-

  • Die bcm*-Dateien muessen nirgendwo hinkopiert werden. Du musst die Bibliothek mit configure konfigurieren (dazu ggf autotools installieren), make, make install aufrufen. Dann sollten sie tatsaechlich in /usr/local landen, wenn du das anders haben willst, kannst du auch "./configure --prefix=/mein/toller/prefix" machen - das hat aber Konsequenzen fuer das finden und laden der Bibliotheken. Wuerde ich also nicht machen.

    Danach einfach

    gcc ili9340.c -c
    gcc sampleX.c -c
    gcc -lbcm2835 -o sampleX ili9340.o sampleX.o

    sollte eigentlich reichen.

  • Kurzes Feedback: Ich bin genau so vorgegangen wie es auf der japanischen Seite beschrieben wurde, und das Display funktioniert ohne Probleme. Die Beispiele 1 bis 3 laufen. Bei Beispiel 4 weiss ich noch nicht wie es aufgerufen wird, weil die Kommentare leider japanisch sind. Aber das ist nicht so wichtig. Hauptsache ich kann jetzt auf dem Display Pixel setzen und Linien zeichnen.

    Gruß
    Michael

    Edited once, last by maus3333 (July 9, 2016 at 10:13 AM).


  • Weiss jemand wieviel Strom die Hintergrundbeleuchtung verträgt? Ich hab's erstmal auf 20mA begrenzt, aber das sieht noch nicht so hell aus.

    Ein Widerstand ist auf dem Display schon in Reihe mit den LED's geschaltet. Ich vermute dass er für 3.3V dimensioniert ist. Bei 3.3V fließen ohne weiteren Vorwiderstand ca. 60mA. Um den Strom bei 5V auf 60mA zu begrenzen, habe ich zusätzlich einen 27 Ohm Widerstand in Reihe geschaltet. Läuft seit ein paar Stunden ohne Probleme.

    Gruß
    Michael

    Edited once, last by maus3333 (July 9, 2016 at 8:07 PM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!