Arduino Library für Electronic Assembly DOG Grafik Displays

OP #6007342
Lesenswert?

Hallo,

ich habe eine Arduino Library für die Electronic Assembly DOG Grafik 
Displays geschrieben.

Bzw. ich habe die Library, die es vom Hersteller hier 
https://www.lcd-module.com/support/application-note/arduino-meets-ea-dog.html 
gibt, genommen, zusammengefasst, korrigiert und erweitert.

Meine Library gibt es auf github: 
https://github.com/generationmake/DogGraphicDisplay

Sie sollte vom Format auch soweit passen, dass man sie direkt in die 
Arduino-Software einbauen kann und auch die Beispiele an der richtigen 
Stelle erscheinen.

Die Library verwendet den intern Display-Speicher. Somit kann nicht auf 
jedes einzelne Pixel zugegriffen werden, sondern immer nur auf 8 
übereinanderliegende Pixel gleichzeitig und beim schreiben werden dann 
auch immer diese 8 überschrieben. Ich denke, das Prinzip ist bekannt, da 
es bei den meisten einfachen kleinen monochromen Displays so gehandhabt 
wird. Vorteil ist, dass man im Mikrocontroller weniger Speicher benötigt 
und nicht dauernd Daten zum Display gesendet werden müssen. 
Dementsprechend ist auch die Library ausgelegt, dass man nicht in jede 
Zeile schreiben kann, sondern immer nur beginnend bei jeder achten. EA 
bezeichnet das als Page und habe ich in der Library auch so beibehalten.

Meine Ergänzungen haben sich darauf beschränkt, dass ich die Library so 
umgeschrieben habe, dass sie nicht nur mit AVR, sondern zum Beispiel 
auch mit ESP32 oder SAMD controllern funktoniert. Außerdem habe ich die 
bisher getrennten Libraries für DOGM128/DOGM132 und DOGS102 in einer 
zusammengeführt, da die Controller ja sehr ähnlich sind. Schließlich 
habe ich die String-Funktion erweitert, dass der Text zum Beispiel auch 
invertiert oder zentriert dargestellt werden kann. Außerdem kann man bei 
den Strings eine bliebige Position (Offset, positiv, negativ) eingeben, 
sodass man längere Texte horizontal durch das Bild scrollen kann.

Zum Testen habe ich dann auch noch ein Arduino-Shield gebaut, das auch 
mit 3,3V Arduinos kompatibel ist. Die Daten dazu befinden sich hier: 
http://arduhmi.generationmake.de/

Über Kommentare, Anmerkungen und Fragen zur Library würde ich mich 
freuen.

Bernhard
Gast #6011957
Lesenswert?

Bernhard M. schrieb:
> Über Kommentare, Anmerkungen und Fragen zur Library würde ich mich
> freuen.

Na gut:

- Eine Klassendefinition sollte einen Konstruktor und einen
Destruktor beinhalten, machen heutige Compiler scheinbar
selbst automatisch ohne äusseres Zutun ... früher wurde
der Programmierer dazu gezwungen (?). Den Konstruktor
(bzw. dessen Aufruf) könnte man dann auch zur Initialsierung
verwenden.

- die Sourcen-Formatierung ist miserabel, Blanks und Tabs
wild gemischt. Eine "anständige" Formatierung hat zwei oder
4 Leerzeichen pro Einrückung, und genau nullkommanull Tabs.
Tabs sind immer scheisse sobald die Öffentlichkeit an einer
Source teilhaben darf. Starke Einrückungen verlangen nach
einem immer breiteren Bildschirm. In der Beschränkung liegt
der Meister.

Besonders "nützlich" sind Tabs bei Funktionsdeklarationen:
1
  void view                (byte direction);

Ist das nicht toll?
OP #6016614
Lesenswert?

Guten Abend,

danke für die Anmerkungen.

Ich habe das jetzt soweit eingearbeitet. Alle Tabs sind jetzt durch zwei 
Leerzeichen ersetzt, so wie es bei Arduino üblich ist.

Außerdem habe ich Konstruktor und Destruktor eingebaut. Auch wenn sie 
nicht viel machen und bei Arduino wohl auch nicht so üblich sind.

Dafür habe ich noch eine begin- und eine end-Funktion eingefügt, so wie 
es bei Arduino üblich ist ( 
https://www.arduino.cc/en/Reference/APIStyleGuide ). Die 
initialize-Funktion kann damit wohl mittelfristig ersetzt werden.

Bernhard

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren