Go Down

Topic: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) (Read 58 times) previous topic - next topic

Jomelo

Hi,
irgendwie haben damit mehrere Leute ab und zu Probleme. Ab und zu läuft es auch ohne Probleme.
Es gibt eine debounce Lib die sich um das Entprellen von Tastern / Schaltern kümmert.

Kommentier in der Loop mal LCDMenuLib_control_digital aus und binde direkt die Lib ein mit den Funktionen die du benötigst.

Pseudocode:
Code: [Select]

if(debounce_dein_button_enter() ...)
   LCDML.Button_enter();

if (...)
   LCDML.Button_up_down_left_right(_LCDMenuLib_button_up);

if ..
   LCDML.Button_up_down_left_right(_LCDMenuLib_button_down);

// oder einen dieser virtuellen Menu Buttons
LCDML.Button_up_down_left_right(_LCDMenuLib_button_left);
LCDML.Button_up_down_left_right(_LCDMenuLib_button_right);
LCDML.Button_quit();


Ich hoffe das führt zum Ziel.
Falls du eine Lauffähige Version hast, würde ich mich über die Lösung freuen und den Code bei mir integrieren.

matze2014

Hallo, danke für deine Hilfe, aber das übersteigt meine Programmier fähigkeiten :smiley-roll:

Aber ich habe das Problem Hardwaremässig gelöst mit einem 100n Kondensator parallel zum Taster.
Jetzt funktioniert es sehr gut.
Kann auch an meinen billig Printtastern gelegen haben die mit sicherheit noch erheblich mehr prellen als andere "bessere" Taster.
Nochmal DANKE!!!

sschultewolter

Mechanische Taster prellen immer, mal mehr und mal weniger. DEN nicht-prellenden mechanischen Taster gibt es nicht. Wenn ja, dann auch nur weil entsprechend mit ICs bereits das Signal entprellt wird. Kondensator reicht für die meisten Fälle
Keinen technischen Support über PN!

flansch

Hallo,

bin wirklich begeistert von dieser Bibliothek und hab jetzt schon einige Zeit damit experimentiert. Nun hatte ich das MacBook nicht im Haus und wollte mein Projekt unter Ubuntu 14.04 weiter bearbeiten. Leider kann ich hier nicht kompilieren, bekomm folgenden Output:

Code: [Select]

In file included from /home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib.h:118:0,
                from lcdml.ino:7:
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_0_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:54:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_18_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:55:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_19_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:56:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_20_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:57:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_21_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:58:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_22_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:59:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_23_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:60:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_24_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:61:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_25_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:62:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_26_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^
lcdml.ino:63:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:104:54: error: variable 'g_LCDMenuLib_lang_27_var' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM prog_char g_LCDMenuLib_lang_ ## name ##_var[]  = content;\
                                                     ^

< und so weiter ... >


lcdml.ino:88:1: note: in expansion of macro 'LCDMenuLib_element'
/home/flansch/sketchbook/libraries/LCDMenuLib/LCDMenuLib_makros.h:245:46: error: variable 'g_LCDMenuLib_lang_table' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 PROGMEM const char *g_LCDMenuLib_lang_table[] = { LCDMenuLib_lang_repeat(N) }; LCDMenuLib_initObjects()
                                             ^
lcdml.ino:89:1: note: in expansion of macro 'LCDMenuLib_createMenu'


Soweit ich das herausgefunden habe, hat sich beim Kompiler gcc von Version 4.6.0 auf 4.6.1 etwas verändert, möglicherweise liegt's an den Named Address Spaces (http://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html). Auf dem MacBook hab ich Kompilerversion 4.2.1, unter Ubuntu 4.8.2. Ich hab nun schon versucht das selbst zu beheben, produziere damit aber immer nur neue Fehlermeldungen  :( Hab einfach noch zu wenig Erfahrung mit dem Arduino, und C-Programmierung ist bei mir inzwischen tatsächlich schon Jahrzehnte her...

Läuft das bei jemandem unter Ubuntu bzw. mit 'nem aktuelleren Kompiler?

Jomelo

Hi, ich installier mir mal eben Ubuntu (VirtualBox) und werde das testen, aber bis ich dann dazu eine Lösung herausgefunden habe, die sich in allen Versionen übersetzen lässt kann es etwas dauern.

Go Up