Vorstellung: Arduino C++ Menu Lib (ARM oder ESP, ggf auch AVR)
so,
nach den vielen Problemen bei der Programmierung der Objekte und Arrays, die wir hier schon besprochen haben, und dank der zahlreichen gegebenen Tipps und Hinweise (vielen Dank nochmals dafür!), hier nun als mein eigenes 2. C++ OOP Projekt eine weitere Vorstellung:
eine Arduino C++ Menu Lib (ARM oder ESP, vlt auch AVR)
Einbindung:
#include <MenuClass.h>
Es ist nicht auf Speicherplatzoptimierung hin programmiert, sondern für eher mittelgroße MCUs, die eh Speicher satt haben.
Es bietet Multilayer-Menüs, die einfach zu instanziieren, zu initialisieren, und zu bedienen und auszuwerten sind.
Die Lib bietet eine Class tMenu, die beliebig häufig instanziiert werden kann.
Sie ist im Beispielprogramm ausgelegt auf OLEDs 128x64 an ESP8266, auch andere OLEDs/TFTs an anderen Arduinos mit Adafruit-TFT Drivern sind bereits vorgesehen oder können angepasst werden.
Außerdem erfolgt die Menü-Darstellung zusätzlich noch per Serial.print(), es ist daher auch ohne TFT zu benutzen.
Steuerung:
Es werden 3 Buttons zu Steuerung benötigt für Cursor auf, ab, und Enter (Auswahl).
Nicht notwendig (aber empfehlenswert) ist die bereits in einem anderen Topic erwähnte ButtonClass.
https://www.roboternetz.de/community...gf-auch-AVR%29
Mit Enter Long-Press kann markiert werden (tag/untag),
wenn markiert (tagged), dann per Enter Doppelclick Übernahme/Rückgabe der Liniennummer ans Hauptprogramm.
Die Auswertungsfunktion bekommt den Click-Status der 3 Buttons übermittelt
tMenu::checkbtn(btnUp, btnDown, btnEnter)
und gibt dann, falls eine Auswahl per Enter-Button erfolgt ist, die ausgewählte Linien-Nummer zurück.
Einträge können im Namen per '>' oder '<' als letzter "Buchstabe" als Verzweigung zu Untermenü/Vorgängermenü konfiguriert werden, dann wird per Longpress oder Doppelclick sofort die Liniennummer zurückgegeben ohne extra vorherige Markierung (tag)
(nicht notwendigerweise erforderlich, aber es macht das Springen zu anderen Menüs einfacher).
Alles andere im readme.txt in der Lib.
Jetzt auf Github: https://github.com/dsyleixa/Arduino/...ster/MenuClass
Share and enjoy! 8)