Schon Schön - aber zu wenig Zeichen. Mein Wunsch, min.6Zeilen, á20Zeichen.
Ich würde gerne statt Zahlen, Klartexte eintragen, Bsp. "Messerwert1= " etc. Dafür muss die Schrift wesentlich kleiner (die Hälfte) sein..
Na ja, das Display besteht im Prinzig aus einer BEGRENZTEN Anzahl von Pixeln. Viele der einfachen Schriften sind dann in 5x8-Pixeln dargestellt. Ich hatte das mal in C so programmiert (siehe Doppelpfeil schräg - mit Anmerkungen)
Code:
/* >>
Stand .......\C5_Ronny-5_etc\R5M30\R5M3kalij.c
=============================================================================== =
...
*** Versionsgeschichte:
==================
x23 19Sep22 1640 Aktualisierung File-Nummer
...
================================================================================ =
*** Aufgabenstellung : Software für RJjr / Ronny5
Original: ..\C5_Ronny-5_etc\R5M_x01\R5M_kal80.c x80 14Apr19 1706 Gute V...
=============================================================================== */
...
...
// ============================================================================== =
// Generierung von LCD-Sonderzeichen für DEM162xx, Satz 4 = RETURN
// ============================================================================== =
void LCD_SZ4(void) // LCD-Sonderzeichen, NUR RETURN à la Pololu
{ //
// - - - - - - - - - - - - - - - -
...
// - - - - - - - - - - - - - - - -
// Pfeil auf
uint8_t LCD_c_1[8] = { // LCD-Character 1
0b00000000, // -----
0b00000000, // -----
0b00000100, // --X--
0b00001110, // -XXX-
0b00010101, // X-X-X
0b00000100, // --X--
0b00000100, // --X--
0b00000000 // -----
};
lcd_generatechar(LCD_GC_CHAR1, LCD_c_1);
// - - - - - - - - - - - - - - - -
...
// - - - - - - - - - - - - - - - -
// Doppelpfeil schräg linksunten<=>rechtsoben
uint8_t LCD_c_4[8] = { // LCD-Character 4 => Pfeil-lu-ro
0b00000000, // ----- Zeile oben, Spalte (7)4..0
0b00000111, // --XXX
0b00000011, // ---XX
0b00010101, // X-X-X
0b00011000, // XX---
0b00011100, // XXX--
0b00000000, // -----
0b00000000 // -----
}; //
lcd_generatechar(LCD_GC_CHAR4, LCD_c_4);
// Anmerkung für RN-frabe 14Nov24-10h22: <<<<<<<<!!!!!!!! <<<<<<<<!!!!!!!!
// Definition der Zeichen oben für 8x5 Pixel, daher sind die Pixel
// Nr 7, 6 u 5 der obigen Binärzahlen immer "0" (eigentlich egal)
// - - - - - - - - - - - - - - - -
// linke Hälfte Copyright ©
uint8_t LCD_c_5[8] = { // LCD-Character 5 => © linke Hälfte
0b00000011, // ---XX
0b00000100, // --X--
0b00001001, // -X--X
0b00001010, // -X-X-
0b00001010, // -X-X-
0b00001001, // -X--X
0b00000100, // --X--
0b00000011 // ---XX
};
lcd_generatechar(LCD_GC_CHAR5, LCD_c_5);
// - - - - - - - - - - - - - - - -
// Rechte Hälfte Copyright ©
uint8_t LCD_c_6[8] = { // LCD-Character 6 => © rechte Hälfte
0b00011000, // XX---
0b00000100, // --X--
0b00010010, // X--X-
0b00000010, // ---X-
0b00000010, // ---X-
0b00010010, // X--X-
0b00000100, // --X--
0b00011000 // XX---
};
lcd_generatechar(LCD_GC_CHAR6, LCD_c_6);
return; //
} // Ende void LCD_SZ4(void)
// === Ende
// ============================================================================== =
// ============================================================================== =
// ===== ENDE Subroutinen
// ============================================================================== =
Natürlich muss nun zwischen den einzelnen Zeichen ein oder zwei Pixel frei bleiben, ebenso zwischen den Zeilen. Daher ist eine VOLLE Ausnützung der Fläche an das Vielfache EINER Buchstabendefinition plus den Zwischenräumen gebunden. Und, soweit ich es beurteilen kann, ist die hier diskutierte klein(st)e Schriftgrösse eben das (untere*gg*) Ende der Fahnenstange. Natürlich kann man da variieren und evtl. nen kleinen TEil der Fläche unbeschreibbar machen - wenn das Vielfache EINES Zeichens eben nicht mehr vollständig reinginge.
.. Wie kann ich lcd.h manuell installieren? Den Bsp-code versethe ich nicht. Kannst du mir DEIN Bsp. als code bitte zur Verfügung stellen? ..
Mal ein Auszug der Anwendung des obigen Codes (und ein bisschen Notizen aus meinem "Labor"Handbuch zum Roboterbasteln)
Code:
4. Mai 2019 C4\arduino-cube mit oled (aco) Die Software für das oled SSD1306 läuft sehr gut mit einem C-Code-Progamm.
Quellen siehe unten, 27.April. Die Darstellung am oled geht in der schwierig lesbaren Normalgröße und in der – immer noch
brillenpflichtigen – Doppelgröße ziemlich gut.
D:\D_pro-fils\compu_MC\C4\aco4\aco4_x21.c
27. April 2019 C4\arduino-cube mit oled (aco)
Wartezeit auf Kleinteile zum arduino-cube von Andree-HB. Es wird das Programm von Michael Köhler, siehe
https://www.mikrocontroller.net/topic/415651#new
aus github übernommen, siehe
https://github.com/Sylaina/oled-display
und leicht modifiziert.
Code:
// ============================================================================= =
// == LCDausgabe, Folge 1
// ============================================================================= =
void lcd_01 (void) // LCDausgabe "1"
{ //
LCD_SZ4 (); // Eigen Sonderzeichen, Satz 4 mit © kal
lcd_clear(); // Vor LCD-Ausgabe Display leeren lcd
lcd_string( Revdat_lcd ); // #define/info01/main "R5M30 Archie xxx"
Line2(); // An den Anfang der 2. Zeile springen
lcd_data( 5 ); lcd_data( 6 ); // Hier NUR "©" - in zwei Hälften
lcd_string( Revdat_lc2 ); // #define/info01/main " JWT2020 xxxxx"
waitms ( 500); //
Line2(); // An den Anfang der 2. Zeile springen
lcd_string(" "); // Zeile löschen
// Selbst definierte Zeichen ausgeben, Hier Zappelphilip
// =: SetCursor (2, 10) heisst SetCursor (x,y), x=zeile {1,2}, y=Pos {0, 15}
LCD_SZ1 (); // Eigene Sonderzeichen generieren, Satz 1 kal
u8 llptr = 1; // Pointer auf Zeichen
s8 llinc = 1;
for ( u8 ll=1; ll<16; ll++ ) // Zappelphilip-Testloop
{ //
SetCursor (2, 10);
if ( llptr < 8 ) lcd_data ( llptr );
if ( llptr == 8 ) lcd_data ( 255 );
if ( llptr == 8 ) waitms ( 300);
llptr = llptr + llinc;
if ( llptr == 8 ) llinc = -1;
if ( llptr == 1 ) llinc = 1;
waitms ( 50);
}
Ich weiß aber jetzt nicht, ob Dich das weiter bringt.
Lesezeichen