{"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_85 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 Contents\"><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\/esp01-neopixel-ring\/#Fakten\" >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\/esp01-neopixel-ring\/#Im_Paket\" >Im Paket<\/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\/esp01-neopixel-ring\/#Pinbelegung\" >Pin assignment<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Anwendungsbereiche\" >Areas of application<\/a><\/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\/esp01-neopixel-ring\/#Ansichten\" >Views<\/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\/esp01-neopixel-ring\/#Analyse\" >Analyse<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Mal_Angeschlossen\" >Bad connection<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Programmierung\" >Programming<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Bibliotheken\" >Libraries<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Testprogramm\" >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-11\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Probleme\" >Problems<\/a><\/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\/esp01-neopixel-ring\/#Sonstiges\" >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\/esp01-neopixel-ring\/#Videos\" >Video(s)<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Fazit\" >Conclusion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Verwandte_Beitrage\" >Verwandte Beitr&auml;ge<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/www.fambach.net\/en\/esp01-neopixel-ring\/#Quellen\" >Sources<\/a><\/li><\/ul><\/nav><\/div>\n\n<p class=\"wp-block-paragraph\">Da ein Men&uuml; auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalit&auml;ten in Klassen gepackt.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Components<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><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 class=\"wp-block-list\"><li>Arduino IDE<\/li><li>LiquidChristal Lib (Kann &uuml;ber den Bibliotheksmanager installiert werden, siehe auch <a href=\"https:\/\/www.fambach.net\/en\/gistpens\/arduino-lcd-shield\/\">here<\/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 class=\"wp-block-list\"><li>Schritt einfache Header mit Klassen, die in einem Hauptrogramm verwendet werden k&ouml;nnen <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&uuml;punkt 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 class=\"wp-block-paragraph\">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 class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/sfambach\/Arduino-LCDMenu\/archive\/master.zip\">Here<\/a> k&ouml;nnt 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 class=\"wp-block-paragraph\">Das Zip k&ouml;nnt ihr in der Aruino GUI installieren.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The integration of libraries in general is described under the following link, and I will not go into further detail here.<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 class=\"wp-block-paragraph\">Bei der Lib ist ein Testprogramm dabei, welches ihr &uuml;ber die Examples ausw&auml;hlen k&ouml;nnt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Pfad ist: LCD Menu Lib -&gt; LCDSchieldTest<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Noch nicht ganz klar?<a href=\"https:\/\/www.fambach.net\/en\/arduino-ide\/\"> Here<\/a> seht ihr wie es geht.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Das Programm kompilieren und auf den Arduino spielen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wenn ihr ein anderes Board verwendet bzw. nicht die LCD Keypad Platine, m&uuml;sst ihr die Einstellungen f&uuml;r die Kn&ouml;pfe und das LCD Display entsprechend euere Konfiguration anpassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Erkl&auml;rung<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Das Men&uuml; wird in der Funktion&nbsp;buildMenu() aufgebaut. Hier wird ein Haupmen&uuml;knoten erstellt, an den dann der Rest angeh&auml;ngt wird.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Folgende Knoten stehen aktuell zur Verf&uuml;gung:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ItemMenu &#8211; Men&uuml;&nbsp; -&gt; Kann alle anderen Men&uuml;punkte als Kind bekommen. Kann auch als Untermen&uuml;punkt verwendet werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ItemBool &#8211; Schalter -&gt; Dieser Men&uuml;punkt kann ein und ausgeschaltet werden.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ItemInt &#8211; Ganzzahlenwert -&gt; Hier k&ouml;nnen integer Werte erh&ouml;ht oder vermindert werden. Min und Max geben die Schranken an.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Callbacks werden im Beispiel nicht benutz, diese k&ouml;nne dazu verwendet werden eine Funktion in eurem Programm aufzurufen wenn sich der Wert eines Men&uuml;punktes &auml;ndert.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Navigation im Men&uuml;<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oben steht am Anfang das Hauptmen&uuml;.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unten steht der 1. Men&uuml;punkt. Mit den rechts\/links Tasten k&ouml;nn ihr den ensprechenden Men&uuml;punkt ausw&auml;hlen. Mit runter springt ihr in den Men&uuml;punkt, mit hoch springt ihr wieder raus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Men&uuml;s k&ouml;nnen 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 class=\"wp-block-paragraph\">F&uuml;r 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 class=\"wp-block-list\"><li>Gleitkomma Men&uuml;eintrag<\/li><li>Balken&nbsp; Men&uuml;eintrag, f&uuml;r kleine Intwerte wird ein Balken angezeigt der die Einstellung symbolisiert.<\/li><li>Auswahlliste Men&uuml;punkt (.. W&auml;hle A, B oder C &#8230;)<\/li><li>zus&auml;tzlichen Beispiel f&uuml;r Callbacks<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Verwandte_Beitrage\"><\/span>Verwandte Beitr&auml;ge<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 \u2013 Heltec Cube Cell Board with 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 \u2013 Round 1.28 inch 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\/d1-mini-shield-oled-64x48\/\">D1 Mini Shield \u2013 OLED 64\u00d748<\/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 \u2013 neoPixel Ring<\/a><\/li>\n<\/ul>\n\n\n\n<h1 class=\"wp-block-heading\">Problems<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">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 loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"\u201eArduino LCD Keypad Shield \u2014 Stefan&#039;s Weblog\" 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<\/figure>","protected":false},"excerpt":{"rendered":"<p>Da ein Men&uuml; auf dem Display zu erstellen eine immer wiederkehrende Aufgabe ist, habe ich einige der Funktionalit&auml;ten in Klassen gepackt. Komponenten Hardware Arduino Uno LCD Shield&nbsp; Software Arduino IDE LiquidChristal Lib (Kann &uuml;ber 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\/esp01-neopixel-ring\/\" class=\"read-more-link\">Carry on reading <span class=\"screen-reader-text\">\"ESP01 &#8211; neoPixel Ring\"<\/span> <span class=\"meta-nav\">\u2192<\/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],"class_list":["post-1409","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-displays","category-arduino-projekte","category-ardunio-uno","category-bibliotheken","category-c-c","category-eigenentwicklungen","tag-displays","tag-arduino-projekte","tag-ardunio-uno","tag-bibliotheken","tag-c-c","penguin-post","penguin-post-not-sticky"],"modified_by":"sfambach","_links":{"self":[{"href":"https:\/\/www.fambach.net\/en\/wp-json\/wp\/v2\/posts\/1409","targetHints":{"allow":["GET"]}}],"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}]}}