Voor de lijnvolgrobot wilden we uiteindelijk de status van de batterij weergeven op het OLED display. Omdat dit display echter zeer klein is, namelijk 0.96 inch, moest er een efficiënte manier gevonden worden om dit weer te geven. Daarom kwam ik op het idee om een custom font met icoontjes in te laden in de OLED library.
Om de creatie van nieuwe glyphs gemakkelijk en efficient te maken, besloot ik een glyph editor te programmeren in Python.
Het type OLED display dat we gebruiken is een SSD1306 wat betekent dat we horizontaal 128 pixels hebben en verticaal 64. Deze verticale pixels zijn vastgelegd in pages, waarbij een page een byte is en dus 8 pixels bevat (het display is monochroom).
Om deze reden worden pixels opgeslagen in een `unsigned char` array met als eerste dimentie de hoeveelheid glyphs is en de tweede dimentie de breedte van de glyph, in ons geval 5 pixels breed. Een verticale kolom of page van een glyph is dus opgeslagen in een hexadecimale usigned char, waardoor de waarde dus 0-255 is.
Voordat ik kon beginnen aan het bouwen van de editor, moest ik er eerst achter zien te komen hoe ik de font array het beste kon parsen en weergeven. Dit deed ik door de array van een glyph in te laden als string. Met RegEx kon ik dan deze hexadecimale string getallen omzetten naar integers. Daarna voerde ik deze integers aan een functie die het getal omzet naar zijn individuele bits. Deze bits transleerde ik dan naar een pixel op een grid en zo kon een karakter weergegeven worden.
Waar ik achter kwam is dat de Arduino libraries van bijvoorbeeld de fonts van Adafruit een andere datastructuur heeft. Als ik dan een glyph van zo'n font inlaadde, was deze 90º gedraaid. Ik heb uiteindelijk besloten zulke fonts niet te ondersteunen.
Het exporteren van een glyph naar een hexadecimale array gebeurd dan precies in de omgekeerde volgorde als beschreven staat bij de vorige paragraaf.