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
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?
>- die Sourcen-Formatierung ist miserabel, Blanks und Tabs >wild gemischt. Auf GitHub sieht der Code ziemlich sauber aus( Lob ). Man kann aber Autoformatfunktion der Arduino-IDE ctrl-t verwenden, um alles einheitlich zu kriegen.
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
Insgesammt mach alles einen sehr sauberen, struktuierten Eindruck. Was mich ein wenig wundert, ist die Klassendefinition im Header-File:
1 | class dogGraphicDisplay |
normalerweise sollten Klassen immer mit einem Großbuchstaben beginnen.
Guten Morgen Christoph, da hast du natürlich recht. In dem Objektorientierten und Library-Schreiben bin ich halt noch nicht ganz so tief drin. Ich habs geändert ... Bernhard
Bernhard M. schrieb: > Ich habe das jetzt soweit eingearbeitet. Sehr gut. Ein Unterschied wie Tag und Nacht!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.