Open MKleinSB opened 5 years ago
Das Problem ist, dass der Zeichensatz jetzt schon ungefähr 700 Byte einnimmt. (Bei Supereugen ist es das vierfache, weil Arrays aus Zahlen immer number sind, auch wenn man einen anderen Typ verwendet.) Das ist viel Speicher, der da verbraten wird. Ich hatte sogar daran gedacht die meisten Sonderzeichen und alle Kleinbuchstaben rauszuschmeissen. Da man die Umlaute leicht ersetzen kann, würde ich lieber auf sie verzichten.
Ich lasse den Issue aber mal offen. Falls noch mehr Stimmen für die Umlaute kommen, ändere ich vielleicht meine Meinung. Oder Du machst einen Pull Request.
Gäbe es eine Möglichkeit zu konfigurieren, welche Zeichensätze geladen werden? Als Dateien zur Auswahl oder bei der Initialisierung des Moduls? Das böte zudem die Möglichkeit, verschiedene Schriftarten zu nutzen.
initFont( 'RAW_FONT_DATA_HERE' );
@bee8bit Der Zeichensatz müsste ja doch zur Laufzeit irgendwo gespeichert werden, um ihn zu laden. Am Ende läuft es immer daruf hinaus, dass diese Minicomputer sehr wenig RAM haben.
Pimoroni klaut den Zeichensatz scheinbar aus dem DAL https://github.com/pimoroni/pxt-scrollbit Das wäre vielleicht eine Möglichkeit. Dann wäre Speicher für Sonderzeichen frei. Problemchen: lief das Paket nicht mal mit normalen SSD1306-Displays. Ich bekomme es mit Deiner Initialisierung nicht mehr hin.
Wenn der Calliope genauso wie der MicroBit funktioniert, wäre das natürlich eine Superlösung. Wenn ich die Zeit dafür habe, schaue ich mir das mal an. Aber ich kann leider nichts versprechen.
Was Dein Display betrifft, weiß ich auch nicht, wo das Problem liegt. Ich denke, ich habe auch ein SSD1306 und da hat es funktioniert.
Da ich den Scrollbit am Calliope betreibe müsste das gehen.
Ich habe inzwischen eine andere (längere) Initialisierung gefunden mit der es läuft:
// initdisplaycodes from https://gist.githubusercontent.com/pulsar256/564fda3b9e8fc6b06b89/raw/4bb559d4088e42f7b4859a8533be920434818617/ssd1306_init.c
export function initDisplay(): void {
cmd(0xAE); // Set display OFF
cmd(0xD4); // Set Display Clock Divide Ratio / OSC Frequency
cmd(0x80); // Display Clock Divide Ratio / OSC Frequency
cmd(0xA8); // Set Multiplex Ratio
cmd(0x3F); // Multiplex Ratio for 128x64 (64-1)
cmd(0xD3); // Set Display Offset
cmd(0x00); // Display Offset
cmd(0x40); // Set Display Start Line
cmd(0x8D); // Set Charge Pump
cmd(0x14); // Charge Pump (0x10 External, 0x14 Internal DC/DC)
cmd(0xA1); // Set Segment Re-Map
cmd(0xC8); // Set Com Output Scan Direction
cmd(0xDA); // Set COM Hardware Configuration
cmd(0x12); // COM Hardware Configuration
cmd(0x81); // Set Contrast
cmd(0xCF); // Contrast
cmd(0xD9); // Set Pre-Charge Period
cmd(0xF1); // Set Pre-Charge Period (0x22 External, 0xF1 Internal)
cmd(0xDB); // Set VCOMH Deselect Level
cmd(0x40); // VCOMH Deselect Level
cmd(0xA4); // Set all pixels OFF
cmd(0xA6); // Set display not inverted
cmd(0xAF); // Set display On
clearDisplay();
}
Hallo Banbury, Habe leider gerade meine OLEDs gekillt aber was bei dir noch gut wäre wären Deutsche Sonderzeichen wie sie Supereugen schon fertig in seinem Projekt hat: https://www.hackster.io/supereugen/graustufen-oled-ansteuern-auch-ohne-pxt-package-a6e95f Mit Writecustomcharacter zwar möglich aber unbequem ;-)