Tuffi schrieb:> Ich brauche> am besten 2 weitere, eine die doppelt so groß ist und eine 4x so große.
Eine vier mal so große Schrift habe ich leider nicht. Aber es gibt eine
Funktion, die die Schriftgröße verdoppelt. Die Funktion heißt
lcd_charMode(uint8_t mode). Standard ist der Mode auf 1 eingestellt.
Übergibst du der Funktion bei Aufruf eine 2 wird fortan die doppelte
Schriftgröße verwendet. Hierzu gibt es zur Besseren Lesbarkeit auch zwei
Makros, einmal NORMALSIZE (entspricht einer 1) und DOUBLESIZE
(entspricht einer 2). Spiele damit ein wenig herum, nicht überall wird
berücksichtigt welche Schriftgröße eingestellt ist, z.B. muss du bei
einem Zeilenumbruch bei eingestellter doppelter Schriftgröße zwei Zeilen
weiter springen statt nur eine.
Eigene Schriften lassen sich auch erstellen. Dafür gibts
Schriftgeneratoren. Bedenke dabei aber, dass die Zeilengröße "nur" 8
Pixel hoch ist, der Code berücksichtigt höhere Schriften nicht.
Der Vorteil der Lib von M.K. ist die geringe Größe und wenig RAM Bedarf,
aber die Fonts durch Pixel vervielfachen sehen dann entsprechend grob
aus. Da gibt es schönere Fonts, die brauchen dann aber mehr Platz im
Flash und es ist ein Framebuffer nötig, sonst flimmert es. Da hat die
Adafruit Lib schöne Fonts drin und es gibt auch Generatoren um weitere
zu erzeugen
https://youtu.be/Y0nxLMqq1Jk
Was Costas schrieb:> Hat jemand eigentlich inzwischen mal ein zum restlichen Font> passendes> Omega-Zeichen designt und implementiert und würde es hier posten?
Ich hab grad mal aus dem Stehgreif das Spezial-Char-Set erweitert um Ω
und ω, meintest du das? Kannst du jetzt aus dem github herunterladen.
Testen kann ich frühestens morgen.
So, konnte es mir jetzt auch noch mal anschauen und musste ein klein
wenig nachbessern aber jetzt schauts gut aus (vgl. Anhang). Ich musste
auch das Makefile anpassen da durch Ω und ω nun das charset UTF-8 nicht
mehr funktioniert.
Nano schrieb:> M. K. schrieb:>>> konnte es mir jetzt auch noch mal anschauen>> Hast Du dazu einen Beispielcode, den die Arduino-IDE verarbeiten mag?
Die Library ist in C geschrieben aber auch zu C++ kompatibel, du kannst
die Funktionen 1:1 auch in Arduino-Projekten verwenden. ;)
ich hoffe es ist ok diesen Beitrag nach einigen Jahren wieder
hervorzukramen. Eine super Bibliothek! Gibt es eine Möglichkeit die
Anzeige um 180° zu drehen?
Ich habe gerade keine Lust im Datenblatt zu suchen, aber ich glaube mich
erinnern zu können, dass es dafür ein Befehl für das Display gibt. Also
nur ein Bit setzen und fertig.
Das dachte ich auch.
Im Datenblatt unter 10.1.14 Set COM Output Scan Direction müsste man es
theoratisch mit (C0h/C8h) umschalten können. Habe diese Stelle
angepasst.
Das Display zeigt nun tatsächlich um 180° gedreht, allerdings auch
spiegelverkehrt :D
Ja, man kann die Anzeige um 180° drehen. In meiner Library ist diese
Funktionalität aber noch nicht implementiert da ich selbst diese
Funktionalität noch nicht benötigt habe (ähnlich wie das Scrollen). Da
werde ich mich am WE mal dran setzen und das integrieren.
Stefan F. schrieb:> Sind wir hier noch beim gleichen Display Controller?
du hast Recht, habe die Lib für beide Controller und bin im falschen
gelandet.
1
if(_flipVertical){
2
command(SSD1306_SEGREMAP|0x0);
3
command(SSD1306_COMSCANINC);
4
}else{
5
command(SSD1306_SEGREMAP|0x1);
6
command(SSD1306_COMSCANDEC);// flip vertically
7
}
ist schon länger her, aber müsste funktionieren.
ja, der Kommentar ist blöde, müsste eigentlich in den anderen Zweig.
Lange her...
Kinderschokolade schrieb:> abe es nun dank der Tipps mit dieser Funktion hinbekommen
Wird das Bild damit nun um 180° gedreht oder nur vertikal gespiegelt?
>Wird das Bild damit nun um 180° gedreht oder nur vertikal gespiegelt?
oh du hast Recht ich habe meine Funktion falsch benannt. Also damit wird
das Bild um 180° gedreht. Spiegeln geht auch. Dann muss man das Kommando
SEGREMAP einfach weglassen....Schreit nach einer tollen Funktion oder?
Der Author wollte ja noch drann. Er macht es dann vernünftig :D
Kinderschokolade schrieb:> Er macht es dann vernünftig :D
Brauch ich nicht, hat Stefan schon gemacht ;)
Derzeit kämpfe ich noch mit der Funktion. Das Problem: Segment-Remap
(horizontal flip) wirkt nicht auf den RAM-Inhalt des Displays, d.h. man
muss die Daten neu zum Display schicken. COM Scan Direction (vertical
flip) wirkt sofort auf den RAM-Inhalt. kniffelig.
Ich hatte die Funktion im Konstruktor benutzt, also nur einmal die
Ausrichtung beim Start gesetzt. Das wird sicher schon für viele
Anwendungen reichen.
So, ich hab die Möglichkeit, das Display bzw. den Inhalt entsprechend zu
spiegeln, implementiert. Man hat die Wahl zwischen horizontal spiegeln,
vertikal zu spiegeln oder horizontal & vertikal zu spiegeln.