{"id":1409,"date":"2018-11-07T18:56:46","date_gmt":"2018-11-07T18:56:46","guid":{"rendered":"http:\/\/fambach.net\/?p=1409"},"modified":"2020-05-23T10:07:59","modified_gmt":"2020-05-23T10:07:59","slug":"menue-klassen-fuer-lcd-displays","status":"publish","type":"post","link":"https:\/\/www.fambach.net\/en\/menue-klassen-fuer-lcd-displays\/","title":{"rendered":"Menu classes for LCD displays"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_73 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewbox=\"0 0 24 24\" version=\"1.2\" baseprofile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Fakten\" title=\"Facts\">Facts<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Schaubild\" title=\"Schaubild\">Schaubild<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Schaltplan\" title=\"Schematic\">Schematic<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Pins\" title=\"Pins\">Pins<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Anwendungsbereiche\" title=\"Areas of application\">Areas of application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Ansichten\" title=\"Views\">Views<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Programmierung\" title=\"Programming\">Programming<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Bibliotheken\" title=\"Libraries\">Libraries<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Testprogramm\" title=\"Test programme\">Test programme<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Probleme\" title=\"Problems\">Problems<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#WiFI_verbindet_sich_nicht\" title=\"WiFI verbindet sich nicht\">WiFI verbindet sich nicht<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Sonstiges\" title=\"Miscellaneous\">Miscellaneous<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Externe_Antennenanschluss_des_ESP_verwenden\" title=\"Externe Antennenanschluss des ESP verwenden\">Externe Antennenanschluss des ESP verwenden<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Tolle_Projekte\" title=\"Tolle Projekte\">Tolle Projekte<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Gehause\" title=\"Case\">Case<\/a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#TTGO-T-Beam-4cockpit\" title=\"TTGO-T-Beam-4cockpit\">TTGO-T-Beam-4cockpit<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#TTGO_T-Beam_v10_Enclosure\" title=\"TTGO T-Beam v1.0 Enclosure\">TTGO T-Beam v1.0 Enclosure<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#TTGO_T-Beam_V11_NEO-6M_Meshtastic_Case\" title=\"TTGO T-Beam V1.1 NEO-6M (Meshtastic) Case\">TTGO T-Beam V1.1 NEO-6M (Meshtastic) Case<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Nicht_selbst_gedruckt\" title=\"Nicht selbst gedruckt\">Nicht selbst gedruckt<\/a><\/li><\/ul><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Fazit\" title=\"Conclusion\">Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Verwandte_Beitrage\" title=\"Related Posts\">Related Posts<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/#Quellen\" title=\"Sources\">Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>Da ein Men\u00fc auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalit\u00e4ten in Klassen gepackt.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Komponenten<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<ul><li>Arduino Uno<\/li><li><a href=\"https:\/\/www.fambach.net\/en\/arduino-lcd-keypad-shield\/\">LCD Shield&nbsp;<\/a><\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<ul><li>Arduino IDE<\/li><li>LiquidChristal Lib (Kann \u00fcber den Bibliotheksmanager installiert werden, siehe auch <a href=\"https:\/\/www.fambach.net\/en\/gistpens\/arduino-lcd-shield\/\">hier<\/a> )<\/li><li>Meine Menu Lib (siehe unten)<\/li><\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Ziele<\/h1>\n\n\n\n<ol><li>Schritt einfache Header mit Klassen, die in einem Hauptrogramm verwendet werden k\u00f6nnen <span style=\"color: #00ff00;\">(erledigt)<\/span>.<\/li><li>Schritt Verpacken der Klassen&nbsp; als Arduino Lib welche in die Gui Importiert werden kann.&nbsp;<span style=\"color: #00ff00;\">(erledigt)<\/span><\/li><li>Weitere Men\u00fcpunkt Varianten erstellen. <span style=\"color: #ffcc00;\">(Kommt vielleicht noch)<\/span><\/li><\/ol>\n\n\n\n<h1 class=\"wp-block-heading\">Installation<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Download<\/h2>\n\n\n\n<p>Die Lib kann bei GitHub runter geladen&nbsp; werden (<a href=\"https:\/\/www.fambach.net\/en\/arduino-lcd-keypad-shield\/\">Hier der Link<\/a>).<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/sfambach\/Arduino-LCDMenu\/archive\/master.zip\">Hier<\/a> k\u00f6nnt ihr sie direkt als Zip-Datei herunterladen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Arduino IDE<\/h2>\n\n\n\n<p>Das Zip k\u00f6nnt ihr in der Aruino GUI installieren.<\/p>\n\n\n\n<p>Die Einbindung von Bibliotheken im generellen ist unter folgenden Link beschrieben, hier werde ich nicht mehr n\u00e4her darauf eingehen.<br><a href=\"https:\/\/www.fambach.net\/en\/arduino-ide\/#Bibliotheken\">https:\/\/fambach.net\/arduino-ide#Bibliotheken<\/a> <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Test programme<\/h2>\n\n\n\n<p>Bei der Lib ist ein Testprogramm dabei, welches ihr \u00fcber die Examples ausw\u00e4hlen k\u00f6nnt.<\/p>\n\n\n\n<p>Der Pfad ist: LCD Menu Lib -&gt; LCDSchieldTest<\/p>\n\n\n\n<p>Noch nicht ganz klar?<a href=\"https:\/\/www.fambach.net\/en\/arduino-ide\/\"> Hier<\/a> seht ihr wie es geht.<\/p>\n\n\n\n<p>Das Programm kompilieren und auf den Arduino spielen.<\/p>\n\n\n\n<p>Wenn ihr ein anderes Board verwendet bzw. nicht die LCD Keypad Platine, m\u00fcsst ihr die Einstellungen f\u00fcr die Kn\u00f6pfe und das LCD Display entsprechend euere Konfiguration anpassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erkl\u00e4rung<\/h2>\n\n\n\n<p>Das Men\u00fc wird in der Funktion&nbsp;buildMenu() aufgebaut. Hier wird ein Haupmen\u00fcknoten erstellt, an den dann der Rest angeh\u00e4ngt wird.<\/p>\n\n\n\n<p>Folgende Knoten stehen aktuell zur Verf\u00fcgung:<\/p>\n\n\n\n<p>ItemMenu &#8211; Men\u00fc&nbsp; -&gt; Kann alle anderen Men\u00fcpunkte als Kind bekommen. Kann auch als Untermen\u00fcpunkt verwendet werden.<\/p>\n\n\n\n<p>ItemBool &#8211; Schalter -&gt; Dieser Men\u00fcpunkt kann ein und ausgeschaltet werden.<\/p>\n\n\n\n<p>ItemInt &#8211; Ganzzahlenwert -&gt; Hier k\u00f6nnen integer Werte erh\u00f6ht oder vermindert werden. Min und Max geben die Schranken an.<\/p>\n\n\n\n<p>Die Callbacks werden im Beispiel nicht benutz, diese k\u00f6nne dazu verwendet werden eine Funktion in eurem Programm aufzurufen wenn sich der Wert eines Men\u00fcpunktes \u00e4ndert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Navigation im Men\u00fc<\/h2>\n\n\n\n<p>Oben steht am Anfang das Hauptmen\u00fc.<\/p>\n\n\n\n<p>Unten steht der 1. Men\u00fcpunkt. Mit den rechts\/links Tasten k\u00f6nn ihr den ensprechenden Men\u00fcpunkt ausw\u00e4hlen. Mit runter springt ihr in den Men\u00fcpunkt, mit hoch springt ihr wieder raus.<\/p>\n\n\n\n<p>Die Men\u00fcs k\u00f6nnen beliebig verschachtelt werde, wie ihr an Submenue 1 und 2 seht.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Conclusion<\/h1>\n\n\n\n<p>F\u00fcr mich reicht die Bibliothek erst mal, ich habe aber noch ein Paar Ideen vielleich werde ich die bei Gelegenheit nochmal umsetzen:<\/p>\n\n\n\n<ul><li>Gleitkomma Men\u00fceintrag<\/li><li>Balken&nbsp; Men\u00fceintrag, f\u00fcr kleine Intwerte wird ein Balken angezeigt der die Einstellung symbolisiert.<\/li><li>Auswahlliste Men\u00fcpunkt (.. W\u00e4hle A, B oder C &#8230;)<\/li><li>zus\u00e4tzlichen Beispiel f\u00fcr Callbacks<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Related Posts<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<ul class=\"display-posts-listing\">\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/arduino-esp8266-zusatzplatine-6\/\">ESP8266 Colourful Weather Station AZSMZ V1.8<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/d1-mini-shield-rgb-led-einzeln\/\">D1 Mini Shield \u2013 RGB LED (Individual)<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/preview-heltec-cube-cell-board-mit-lora-wan\/\">Preview &#8211; Heltec Cube Cell Board mit LoRa Wan<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/preview-rundes128-zoll-tft-lcd-display\/\">Preview &#8211; Rundes1,28 zoll TFT LCD Display<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/d1-mini-shield-rgb-led\/\">D1 Mini Shield \u2013 RGB LED<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/d1-mini-shield-i2c-connector\/\">D1 Mini Shield \u2013 I2C Connector<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/d1-mini-shield-matrix-led-shield\/\">D1 Mini Shield \u2013 Matrix LED Shield<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/balken-im-crystal-lcd-retro-style\/\">Bars in Crystal LCD Retro Style<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/\">ESP01 &#8211; neoPixel Ring<\/a><\/li>\n<li class=\"listing-item\"><a class=\"title\" href=\"https:\/\/www.fambach.net\/en\/lilygo-t-beam\/\">LilyGo T-Beam<\/a><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Problems<\/h1>\n\n\n\n<p>Aktuell klappt das entprellen der Tasten im Beispiel nur bedingt. Den Fehler muss ich noch finden und beheben.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Sources<\/h1>\n\n\n\n<figure class=\"wp-block-embed-wordpress wp-block-embed is-type-wp-embed is-provider-stefan-039-s-webblog\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"UqDalaEfSy\"><a href=\"https:\/\/www.fambach.net\/en\/arduino-lcd-keypad-shield\/\">Arduino LCD Keypad Shield<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8222;Arduino LCD Keypad Shield&#8220; &#8212; Stefan&#039;s WebBlog\" src=\"https:\/\/www.fambach.net\/arduino-lcd-keypad-shield\/embed\/#?secret=53w8Ka988A#?secret=UqDalaEfSy\" data-secret=\"UqDalaEfSy\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>","protected":false},"excerpt":{"rendered":"<p>Da ein Men\u00fc auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalit\u00e4ten in Klassen gepackt. Komponenten Hardware Arduino Uno LCD Shield&nbsp; Software Arduino IDE LiquidChristal Lib (Kann \u00fcber den Bibliotheksmanager installiert werden, siehe auch hier ) Meine Menu Lib (siehe unten) Ziele Schritt einfache Header mit Klassen, die in &#8230;<\/p>\n<a href=\"https:\/\/www.fambach.net\/en\/ttgo-lora32-oled-v1\/\" class=\"read-more-link\">Continue reading <span class=\"screen-reader-text\">\"TTGO LORA32 OLED V1\"<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a>","protected":false},"author":1,"featured_media":1403,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[214,178,180,183,184,304],"tags":[57,94,22,71,28],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1409"}],"collection":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/comments?post=1409"}],"version-history":[{"count":9,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1409\/revisions"}],"predecessor-version":[{"id":8271,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1409\/revisions\/8271"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media\/1403"}],"wp:attachment":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/media?parent=1409"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/categories?post=1409"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/tags?post=1409"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}