Show Posts
Pages: 1 [2] 3 4 ... 43
16  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 12, 2014, 04:08:41 pm
While-Schleifen kannst du mit break; beenden.  
z.B.
Code:
while(true)
{
  if(digitalRead(dein_Button)) {
    break;
  }
}
17  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 11, 2014, 08:46:04 am
Hi, den Pfeil zu ändern ist so direkt nicht vorgesehen.

Wenn du es aber umbedingt willst, kannst du in das Lib Verzeichnis gehen, dann auf LCDMenuLib/ und die LCDMenuLib.cpp öffnen.
Dort steht in Zeile 237:
Code:
lcd->_LCDML_lcd_write(0x7E);
Wenn du 0x7E veränderst, ändert sich der Cursor. Du musst nun nur herausfinden welchen Hexcode dein neues Zeichen hat.
18  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 11, 2014, 06:06:06 am
Ich teste das heute abend mal, meine Pause ist nun um ;-)
19  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 11, 2014, 05:46:15 am
Wie die Funktion aussieht weiß ich, an der Funktion musst du nichts verändern.

Hier mal ein Beispiel:
Code:
/* menu element count - last element id */
#define _LCDMenuLib_cnt    21  

/* init lcdmenulib */
LCDMenuLib_init(_LCDMenuLib_cnt);

/* create lcdmenulib */
/* Item           => layer 0 */
/* Item_XX        => layer 1 */
/* Item_XX_XX     => layer 2 */
/* Item_XX_XX_XX  => layer 3 */
/* LCDMenuLib_element(id, prev_layer_element, current_layer_element, lang_string, callback_function) */
LCDMenuLib_element(0  , Item         , Item_1        , "Information"        , FUNC_information);
LCDMenuLib_element(1  , Item         , Item_2        , "Zeit Info"          , FUNC_timer_info);
LCDMenuLib_element(2  , Item         , Item_3        , "Einstellungen"      , FUNC);
LCDMenuLib_element(3  , Item_3       , Item_3_1      , "Werte veraendern"   , FUNC);
LCDMenuLib_element(4  , Item_3       , Item_3_2      , "Irgendwas"          , FUNC);
LCDMenuLib_element(5 , Item_3       , Item_3_3      , "zurueck"            , FUNC_back);
LCDMenuLib_element(6  , Item         , Item_4        , "Programme"          , FUNC);
LCDMenuLib_element(7  , Item_4       , Item_4_1      , "Programme 1"        , FUNC);
LCDMenuLib_element(8  , Item_4_1     , Item_4_1_1    , "P1 Starten"         , FUNC);
LCDMenuLib_element(9  , Item_4_1     , Item_4_1_2    , "Einstellungen"      , FUNC);
LCDMenuLib_element(10  , Item_4_1_2   , Item_4_1_2_1  , "extra warm"         , FUNC);
LCDMenuLib_element(11 , Item_4_1_2   , Item_4_1_2_2  , "extra lang"         , FUNC);
LCDMenuLib_element(12 , Item_4_1_2   , Item_4_1_2_3  , "zurueck"            , FUNC_back);
LCDMenuLib_element(13 , Item_4_1     , Item_4_1_3    , "zurueck"            , FUNC_back);
LCDMenuLib_element(14 , Item_4       , Item_4_2      , "Programm 2"         , FUNC_p2);
LCDMenuLib_element(15 , Item_4       , Item_4_3      , "Programm Mix"       , FUNC);
LCDMenuLib_element(16 , Item_4       , Item_4_4      , "Programm Hemden"    , FUNC);
LCDMenuLib_element(17 , Item_4       , Item_4_5      , "Programm Schnell"   , FUNC);
LCDMenuLib_element(18 , Item_4       , Item_4_6      , "Einstellungen"      , FUNC);
LCDMenuLib_element(19 , Item_4_6     , Item_4_6_1    , "Irgendwas"          , FUNC);
LCDMenuLib_element(20 , Item_4_6     , Item_4_6_2    , "zurueck"            , FUNC_back);
LCDMenuLib_element(21 , Item_4       , Item_4_7      , "zurueck"            , FUNC_back);
LCDMenuLib_createMenu(_LCDMenuLib_cnt);

Fügst du den Code im Beispiel ein, gibt es mehrere zurück Buttons

Ganz wichtig:
Die Variable  #define _LCDMenuLib_cnt    21   muss angepasst werden, steht hier nur 17 drin werden die letzten Buttons nicht angezeigt.
20  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 10, 2014, 11:33:54 am
Das hast du schon richtig erkannt. Probier einfach mal aus wenn du in der control folgende Zeilen anpasst:
Code:
if(LCDML.Timer(g_LCDMenuLib_press_time, _LCDMenuLib_cfg_press_time) && button > 0)
{
   if(digitalRead(Encoder_Push)) { LCDML.Button_enter(); }
   else if(button == 1) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_up); }
   else if(button == 2) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_down); }
   //else if(digitalRead(_BUTTON_digital_quit) && _BUTTON_digital_enable_quit == 1) {LCDML.Button_quit(); }
   //else if(button == 1) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_left);}
   //else if(button == 2) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_right);}       


Wenn es dann nicht klappt, teste mal diesen Code, aber nur wenn der andere nicht funktioniert. Da ich das nicht testen kann und nur halbwegs gut raten kann wie das Verhalten ist könnte dies hier funktionieren:

Code:
void LCDMenuLib_control_encoder()
{
  i = digitalRead(Encoder_PinA);              
  if ((Encoder_PinALast == LOW) && (i == HIGH)) {
    if (digitalRead(Encoder_PinB) == LOW ) {    
      LCDML.Button_up_down_left_right(_LCDMenuLib_button_up);      
    } else {
      LCDML.Button_up_down_left_right(_LCDMenuLib_button_down);
    }
  }
  Encoder_PinALast = i;  
  if(digitalRead(Encoder_Push) == HIGH && LCDML.Timer(g_LCDMenuLib_press_time, _LCDMenuLib_cfg_press_time)) {                      
    LCDML.Button_enter();
  }  
}

Dieser code ist aber nicht schön, da man "i" niemals als globale Variable deklarieren sollte. Denk dir dafür besser einen anderen Namen aus ansonsten bekommst du noch Probleme im weiteren Umgang mit dem Arduino.

Dann noch etwas, da du keine "zurück" Button besitzt musst du diese Funktion selbst hinzuschreiben. Schau dir dabei das Beispiel an, bei einer Untereben habe ich das gemacht mit  FUNC_Back.
21  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 10, 2014, 05:50:33 am
Probier es mal so oder so ähnlich, ich kann es nun nicht testen da ich keinen Encoder besitze.

In Controll:
Code:
boolean lastEncoderValue = False;

void LCDMenuLib_control_encoder()
{
boolean statusEncoder;
uint8_t button = 0;

statusEncoder = digitalRead(Encoder_PinA);               //Variable i = Encoder PinA
if ((lastEncoderValue == LOW) && (statusEncoder == HIGH)) {
if (digitalRead(Encoder_PinB) == LOW) {     //wenn Encoder PinB low ist
button = 1; // links ?
} else {
button = 2; // rechts ?
}
}

lastEncoderValue = statusEncoder;
     

if(LCDML.Timer(g_LCDMenuLib_press_time, _LCDMenuLib_cfg_press_time) && button > 0)
{
   if(digitalRead(Encoder_Push)) { LCDML.Button_enter(); }
   //else if(digitalRead(_BUTTON_digital_up)) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_up); }
   //else if(digitalRead(_BUTTON_digital_down)) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_down); }
   //else if(digitalRead(_BUTTON_digital_quit) && _BUTTON_digital_enable_quit == 1) {LCDML.Button_quit(); }
   else if(button == 1) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_left);}
   else if(button == 2) { LCDML.Button_up_down_left_right(_LCDMenuLib_button_right);}       

}

Im Setup, deine Pin definitionen mit  pinMode(.......)

Im Loop
Code:
//..
//LCDMenuLib_control_analog();      /* lcd menu control - config in tab "LCDML_control" */
  //LCDMenuLib_control_digital();     /* lcd menu control - config in tab "LCDML_control" */
  //LCDMenuLib_control_serial();        /* lcd menu control */ 
  LCDMenuLib_control_encoder();        /* lcd menu control */ 
  LCDMenuLib_loop();                  /* lcd function call */
//..

Die zurück Buttons auf jeder Ebene musst du dir selbst bauen, dazu gibt es auf irgendeiner der vorherigen Seite eine Anleitung, ich weiß nun aber nicht genau wo. Wenn ich sie finde füg ich sie hier noch ein.
22  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 10, 2014, 04:54:56 am
Code geht mit  [ code ] [ /code ] ohne Leerzeichen.

Den Quellcode den du oben gepostet hast, der stammt aber nicht aus deinem Code, das ist ein Teil aus der Lib. Zeig mal bitte deinen eigenen Code

Edit:
Ihr wart schneller ;-)
23  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: June 10, 2014, 04:24:56 am
@Letty
Das nur Menufunktionen von dieser Funktion betroffen sind ist absicht. Jede andere Funktion kann man direkt aufrufen.

@Giovanni85
Kannst du den Encoder schon auslesen ?  Falls nein, erstell bitte ein eigenes Thema. Sobald dieses funktioniert kann ich dir hier weiterhelfen um die Steuerung anzupassen. Dies ist dann in ein paar Minuten erledigt.
24  International / Deutsch / Re: Tutorial - Messdaten auf Webspace ablegen und grafisch darstellen on: May 25, 2014, 10:52:42 am
Zur Datenbank muss ich leider noch etwas meckern.

So wie deine Inserts aussehen ist das sehr offen. Ich könnte z.B: mit einer passenden Anfrage über $_GET  deine Datenbank lahmlegen oder gar klauen. Such mal nach dem Begriff SQL Injektion und schau dir in php mal die PDO und / oder mysqli Erweiterung an.

Ansonsten sieht das schon sehr gut aus ;-)
25  International / Deutsch / Re: Arduino über Raspberry PI steuern und programmieren on: May 25, 2014, 03:16:47 am
Oder schau mal in diesen Thread, dort basteln wir auch an so etwas rum ;-)

http://forum.arduino.cc/index.php?topic=234777.msg1698168#msg1698168

Ich kann mittlerweile bei mir das Hexfile per Website hochladen und es wird anschließend auf den Arduino übertragen.
26  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: May 25, 2014, 02:14:54 am
An welche Stelle im Programm muss denn die LCDMenuLib_jumpToFunc(funcname);  gesetzt werden?

Ich habe es im setup probiert und im loop aber bei beiden malen Startet das Display nicht mehr bzw lässt sich nicht mehr bedienen.

Probier es mal hiermit:
Code:
//....
//Deaktivieren des Init Screens, da du ja eien eigene Funktion nutzen willst
//....

//....
void setup()
{   
  LCDMenuLib_setup(_LCDMenuLib_cnt);  /* Setup for LcdMenuLib */
  Serial.begin(9600);                 /* start serial */
  LCDMenuLib_jumpToFunc(FUNC_p2); 
}
//.....

In die Endfunktion von FUNC_p2 könntest du dann z.B.   

LCDML.goRoot();

einbauen. Mit diesem Befehl kommst du zurück zum Hauptmenü egal von wo.
27  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: May 25, 2014, 02:05:28 am
Vermutlich ja, aber ohne Quellcode können wir alle nur raten
28  International / Deutsch / Re: Arduino <-> Raspberry <-> MySQL Serial Communication on: May 25, 2014, 02:04:22 am
Hi, kannst du teile deines Codes hier hochladen, ich hab die Teile meines Codes nicht gespeichert und müsste mir von oben alles zusammenkopieren. ;-)
Im Moment blick ich da nicht durch.
29  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: May 23, 2014, 05:25:39 am
Ich bin bis Sonntag im Urlaub und schick dir dann ein Beispiel. Es kann auch Montag werde, je nachdem wie gut das Wetter am Sonntag ist ;-)
30  International / Deutsch / Re: Projekt: LCDMenuLib - LCD Menü mit mehreren Ebenen (4Bit/I2C/ShiftReg/...) on: May 15, 2014, 11:36:40 am
Hi, beides ist möglich.  Der Innit Screen ist quasi so eine Funktion.  Du kannst aber auch das Menü mit einer Funktionen beginnen lassen. ( LCDMenuLib_jumpToFunc(funcname); ) Das mit dem Zurück Knopf versteh ich nicht ganz, mal funktionierts, mal nicht oder wie ?
Wieso sind bei der Funktion mehr { }  drin als benötigt werden ?
Pages: 1 [2] 3 4 ... 43