Go Down

Topic: Pool-pumpen Steuerung mit TDS und Zeitschaltuhr hilfe beim programmieren (Read 9671 times) previous topic - next topic

pidimarx

hier erstmal die fehlermeldungen

a_men_fertig:1: error: expected unqualified-id before '/' token
a_men_fertig:1: error: expected constructor, destructor, or type conversion before '/' token
In file included from a_men_fertig.ino:3:
C:\Users\Medion\Documents\Arduino\libraries\LCDMenuLib/LCDMenuLib.h:52: error: ISO C++ forbids declaration of 'LiquidCrystal' with no type
C:\Users\Medion\Documents\Arduino\libraries\LCDMenuLib/LCDMenuLib.h:52: error: expected ';' before '*' token
C:\Users\Medion\Documents\Arduino\libraries\LCDMenuLib/LCDMenuLib.h:91: error: 'LiquidCrystal' has not been declared
a_men_fertig:91: error: redefinition of 'prog_char g_LCDMenuLib_lang_2_var []'
a_men_fertig:90: error: 'prog_char g_LCDMenuLib_lang_2_var [14]' previously defined here
a_men_fertig.ino: In function 'void LCDMenuLib_2_function()':
a_men_fertig:91: error: redefinition of 'void LCDMenuLib_2_function()'
a_men_fertig:90: error: 'void LCDMenuLib_2_function()' previously defined here
a_men_fertig.ino: At global scope:
a_men_fertig:94: error: redefinition of 'prog_char g_LCDMenuLib_lang_4_var []'
a_men_fertig:93: error: 'prog_char g_LCDMenuLib_lang_4_var [19]' previously defined here
a_men_fertig.ino: In function 'void LCDMenuLib_4_function()':
a_men_fertig:94: error: redefinition of 'void LCDMenuLib_4_function()'
a_men_fertig:93: error: 'void LCDMenuLib_4_function()' previously defined here
a_men_fertig.ino: At global scope:
a_men_fertig:95: error: expected ',' or ';' before 'Uhrzeit'
a_men_fertig:96: error: expected ',' or ';' before 'Uhrzeit'
a_men_fertig.ino: In function 'void LCDMenuLib_6_function()':
a_men_fertig:96: error: 'Item_4' was not declared in this scope
a_men_fertig.ino: In function 'void LCDMenuLib_7_function()':
a_men_fertig:97: error: 'Item_4_1' was not declared in this scope
a_men_fertig.ino: In function 'void LCDMenuLib_8_function()':
a_men_fertig:98: error: 'Item_4_1' was not declared in this scope
a_men_fertig.ino: In function 'void LCDMenuLib_9_function()':
a_men_fertig:99: error: 'Item_4_1_2' was not declared in this scope
a_men_fertig.ino: In function 'void LCDMenuLib_10_function()':
a_men_fertig:100: error: 'Item_4_1_2' was not declared in this scope
a_men_fertig.ino: At global scope:
a_men_fertig:101: error: expected ',' or ';' before 'Zeit'
a_men_fertig.ino: In function 'void LCDMenuLib_11_function()':
a_men_fertig:101: error: 'Item_4' was not declared in this scope
a_men_fertig.ino: At global scope:
a_men_fertig:102: error: 'g_LCDMenuLib_lang_12_var' was not declared in this scope
a_men_fertig:102: error: 'g_LCDMenuLib_lang_13_var' was not declared in this scope
a_men_fertig:102: error: 'g_LCDMenuLib_lang_14_var' was not declared in this scope
a_men_fertig:102: error: 'g_LCDMenuLib_lang_15_var' was not declared in this scope
a_men_fertig:102: error: 'g_LCDMenuLib_lang_16_var' was not declared in this scope
a_men_fertig:102: error: 'LiquidCrystal' does not name a type
a_men_fertig:102: error: 'lcd' was not declared in this scope
a_men_fertig.ino: In function 'void setup()':
a_men_fertig:113: error: 'lcd' was not declared in this scope
a_men_fertig:113: error: 'LCDMenuLib_12_function' was not declared in this scope
a_men_fertig:113: error: 'LCDMenuLib_13_function' was not declared in this scope
a_men_fertig:113: error: 'LCDMenuLib_14_function' was not declared in this scope
a_men_fertig:113: error: 'LCDMenuLib_15_function' was not declared in this scope
a_men_fertig:113: error: 'LCDMenuLib_16_function' was not declared in this scope

skorpi08

Ich habe Select als Enter und taste nach links als zurück eingestellt.

Code: [Select]
  #define _BUTTON_PIN                        0 
/* Als nächstes werden hier die Bereiche definiert für welchen
* Wert welcher Button gültig ist. */
  #define _BUTTON_enter_min                  690     // Button Enter
  #define _BUTTON_enter_max                  790
  #define _BUTTON_back_min                   455     // Button Back
  #define _BUTTON_back_max                   555 
  #define _BUTTON_up_min                     95     // Button Up
  #define _BUTTON_up_max                     195 
  #define _BUTTON_down_min                   280     // Button Down
  #define _BUTTON_down_max                   380     
  #define _BUTTON_left_min                   455     // Button Left
  #define _BUTTON_left_max                   555 
  #define _BUTTON_right_min                  0     // Button Right
  #define _BUTTON_right_max                  50
Nicht Mensch, nicht Tier: Programmierer halt...

pidimarx

Auch eine gut idee. Aber wie erreicht man den anderen wert beim längeren halten?

Habe mir jetzte mal was zusammen gestückelt aber komme da auch nicht weiter weil ich immer fehler hab beim überprüfen....

Kann man überhaupt #include <LiquidCrystal.h> einfach copy and paste?

braucht man #define _BUTTON_press_time                 200
überhaupt?

MfG
Quote

#include <LiquidCrystal.h>

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

void setup() {
  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // turn on the cursor:
  lcd.cursor();
}

#define RELAY_ON 0
#define RELAY_OFF 1

#define _BUTTON_PIN   0

#define _BUTTON_press_time                 200

#define _BUTTON_enter_min                  742
#define _BUTTON_up_min                     144
#define _BUTTON_down_min                   331
#define _BUTTON_left_min                   506
#define _BUTTON_right_min                  0

#define Relay_1  6  // Kanäle 6 & 7
#define Relay_2  7


michael_x

Deine merkwürdigen Fehler werden vermutlich verursacht dadurch dass Arduino IDE, um dir zu helfen, vor deinen Code zusätzliche Funktions-Deklarationen schreibt. Und dabei ein unsinniges '/' einfügt.
Dann ist alles verquer und das

#include <LCDMenuLib.h>

geht voll daneben. Leider ist mir die eigentliche Ursache auch nicht ins Auge gesprungen.
Also erstmal die Menüdefinition wieder raus, bis es fehlerfrei Übersetzt, und dann Stück für Stück aufbauen...


Quote
braucht man #define _BUTTON_press_time                 200
überhaupt?


Ich hab nichts gefunden, auch der Sinn von
unsigned long g_button_press_time = 0;
ist erstmal noch unklar.

skorpi08

Press time ist dazu da, damit die taste nur einmal gedrückt wird und nicht mehrmals/ dadurch wird autofeuer verhindert.
Nicht Mensch, nicht Tier: Programmierer halt...

pidimarx

also so richtig verstehe ich nicht was ihr meint. wie gesagt ich ich habe noch nie was mit programmieren zu tun gehabt.

habe ich den code richtig angefangen?

Serenifly

Das ist mehr ein elektronisches/mechanisches Problem. Taster Prellen. d.h. die Kontakte federn wenn sie gedrückt werden und lösen mehre Impulse aus. Das verhindert man indem man nach dem ersten Impuls ein Delay macht. Hier ist das Delay 200ms. ca. 50ms reichen da normal auch.

pidimarx

ok,
Hab alles nochmal umgeschrieben und auch einige fehler beseitigt. Heute wird wohl meine RTC kommen dann gehts weiter.
Habe noch eine fehler meldung damit weiss ich leider nichts mit anzufangen...

fehlermeldung
a_men_fertig:128: error: function definition does not declare parameters

hier erstmal mein code

Code: [Select]
#include <LiquidCrystal.h>
#include <LCDMenuLib.h>

/*
* ===============================================
* Defines
* ===============================================
*/
/* Einstellungen fuer das verwendete LCD (16x2) */
#define _LCDMenuLib_cols                          16
#define _LCDMenuLib_rows                          2
/* Pin Belegung fuer das LCD */
#define _LCDMenuLib_PIN_rs                        8
#define _LCDMenuLib_PIN_e                         9
#define _LCDMenuLib_PIN_dat4                      4
#define _LCDMenuLib_PIN_dat5                      5
#define _LCDMenuLib_PIN_dat6                      6
#define _LCDMenuLib_PIN_dat7                      7
/*Pinbelegung Relais / Relais ansteuerung*/
#define RELAY_ON 0
#define RELAY_OFF 1

#define RELAY_1 3
#define RELAY_2 4
/* Scrollbar:
* Die neue Scrollbar belegt ca 1100 Bytes mehr an Speicherplatz wie die alte Scrollbalken.
* Wer den alte Scrollbalken wieder aktivieren will, muss in das Lib Verzeichnis gehen und unter
* ./LCDMenuLib/LCDMenuLib_config.h   
* den Wert _LCDMenuLib_cfg_scrollbar 1 in 2 verändern. Deaktivieren lässt sich die
* Scrollbar mit dem Wert 0
*/

/* Button press time gibt den puffer an nach welcher zeit der nächste
* Tastendruck gültig ist.
*/
#define _BUTTON_press_time                 50 //ms
/* Hier wird der Button Pin belegt, falls der Button Mode auf 1
* steht (Analoger Eingang), ansonsten ist die Variable unwichtig
*/
#define _BUTTON_PIN                        0 
/* Als nächstes werden hier die Bereiche definiert für welchen
* Wert welcher Button gültig ist.
*/
#define _BUTTON_enter_min                  742     // Button Enter
#define _BUTTON_enter_max                  762
#define _BUTTON_back_min                   506     // Button Back
#define _BUTTON_back_max                   526
#define _BUTTON_up_min                     144     // Button Up
#define _BUTTON_up_max                     164
#define _BUTTON_down_min                   331     // Button Down
#define _BUTTON_down_max                   351
#define _BUTTON_right_min                  0       // Button Right   
#define _BUTTON_right_max                  20
#define _BUTTON_left_min                           // Button Left
#define _BUTTON_left_max
/*
* ===============================================
* Globale Variables
* ===============================================
*/
/* Button press Time, wird hiermit überprüft */
unsigned long g_button_press_time = 0;

/*
* ===============================================
* Initialisierung LCDMenuLib
* ===============================================
*/
/*
* Anzahl der Buttons - 1, da Null der erste Button ist
*/
#define _LCDMenuLib_cnt    13 
/*
* Initialisierung LCDMenu
*/
LCDMenuLib_init(_LCDMenuLib_cnt);
/* Nested Set Object
* Hier werden alle Sprachelemente definiert die im Programm vorkommen
* Die Bezeichnung sollte nicht länger sein, als das Display - 2 Zeichen
* Bei 20 Zeichen => 18 Zeichen für die Bezeichnung
* Bei 16 Zeichen => 14 Zeichen für die Bezeichnung
*
* Item 0 ist die oberste Ebene
* in der obersten Ebene wird ein Elemtnt mit dem Namen Item1 angelegt
* danach wird ein weiteres item angelegt (Item2) das sich auch in Ebene 0 befindet
*
* das Item liegt in Ebene 0
* Alle Items die eine Zahl hinterm Namen haben liegen in Ebene 1
* Alle Items die zwei Zahlen hinterm Namen haben liegen in Eben 2 
* usw.
*/
LCDMenuLib_element(0  , Item_1       , Item_1          , "Info"                          , FUNC_information); // Pumpe 1 und 2 an aus temp sensor 1 und 2
LCDMenuLib_element(1  , Item_2       , Item_2          , "Uhrzeit Datum"                 , FUNC_timer_info); //RTC Lesen
LCDMenuLib_element(2  , Item_3       , Item_3          , "Einstellungen"                 , FUNC);
LCDMenuLib_element(3  , Item_3       , Item_3_1        , "Pumpen ON/OFF"                 , FUNC);
LCDMenuLib_element(4  , Item_3       , Item_3_2        , "P-Pumpe ON/OFF"                , FUNC); //RELAIS 1 AN/AUS
LCDMenuLib_element(5  , Item_3       , Item_3_2_1      , "S-Pumpe ON/OFF"                , FUNC); //RELAIS 2 AN/AUS
LCDMenuLib_element(6  , Item_3       , Item_3_1_1      , "Zeitschaltuhr"                 , FUNC);
LCDMenuLib_element(7  , Item_3       , Item_3_1_1_1    , "Pumpe 1 ON"                    , FUNC); //Zeit Relais an
LCDMenuLib_element(8  , Item_3       , Item_3_1_1_2    , "Pumpe 1 OFF"                   , FUNC); //Zeit Relais aus
LCDMenuLib_element(9  , Item_3       , Item_3_1_2      , "TDS"                           , FUNC);
LCDMenuLib_element(10 , Item_3       , Item_3_1_2_1    , "Temp S1 &S2"                   , FUNC); //read sensor1 read sensor2
LCDMenuLib_element(11 , Item_3       , Item_3_1_2_2    , "Config TDS"                    , FUNC);
LCDMenuLib_element(12 , Item_3       , Item_3_1_3_1    , "Pumpe ON +10°C"                , FUNC); //Differenz A1 zu A2 10°C Solar Pumpe ON
LCDMenuLib_element(13 , Item_3       , Item_3_1_3_2    , "Timer S-Pumpe"                 , FUNC); //Timer los wenn pumpe an, aus wenn aus
LCDMenuLib_createMenu(_LCDMenuLib_cnt);


/*
* ===============================================
* SETUP
* ===============================================
*/
void setup()
{
  /* Setup for LcdMenuLib */
  LCDMenuLib_setup(_LCDMenuLib_cnt);

  //Serial.begin(9600);   
}

/*
* ===============================================
* LOOP
* ===============================================
*/
void loop
{
  LCDMenuLib_ButtonAnalog();
  //LCDMenuLib_ButtonSerial();   
  LCDMenuLib_loop(); 
}

pidimarx

Als RTC habe ich jetzt die tinyrtc 1.1 DS1307 .
Kann Mann Standard Sensoren von thermometern zum auslesen nehmen?
habe schon 2 im System und es währe vom Vorteil wenn die drin bleiben könnten da die ein geklebt sind.

jurs


Kann Mann Standard Sensoren von thermometern zum auslesen nehmen?
habe schon 2 im System und es währe vom Vorteil wenn die drin bleiben könnten da die ein geklebt sind.


Mit Arduino kannst Du alles verwenden, was mit 5 Volt Betriebsspannung funktioniert und was Du softwaretechnisch ansteuern kannst.

Um was für "Standard Sensoren" geht es denn?
Genaue Typenbezeichnung?

pidimarx

sind von billig thermometern.
wie gesagt ich habe 2 DS18B20 sensoren bestellt.

jurs


wie gesagt ich habe 2 DS18B20 sensoren bestellt.


OK, dann schlage ich vor:
Die DS1307 RTC und das aufsteckbare LCD-Keypad-Shield machen beim funktionstüchtigen Anschluss fast keine Probleme, am besten konzentrierst Du Dich daher zunächst mal darauf, die beiden DS18B20 Temperatursensoren so mit den von Dir benötigten Leitungslängen anzuschließen, dass sie an Deinem UNO-Board funktionieren. Das werden ja wohl ein paar Meter sein, oder?

Dazu benötigst Du eine installierte OneWire-Library, die Du hier downloaden kannst:
http://www.pjrc.com/teensy/arduino_libraries/OneWire.zip

Zum Testen kannst Du den als Beispiel enthaltenen Sketch "DS18x20_Temperature" verwenden, der bei korrekter Funktion mit zwei angeschlossenen Sensoren auf dem seriellen Monitor sowas ähnliches ausgibt wie:
Code: [Select]

ROM = 28 EA A6 A7 4 0 0 E6
 Chip = DS18B20
 Data = 1 70 1 4B 46 7F FF 10 10 E1  CRC=E1
 Temperature = 23.00 Celsius, 73.40 Fahrenheit
ROM = 28 B6 C7 A7 4 0 0 69
 Chip = DS18B20
 Data = 1 6F 1 4B 46 7F FF 1 10 67  CRC=67
 Temperature = 22.94 Celsius, 73.29 Fahrenheit
No more addresses.


Und beim Verkabeln der Sensoren bitte möglichst vorschriftsmäßig verkabeln. OneWire ist ein BUS-System und vom Prinzip her gibt es diese drei verschiedenen Topologien, wie Du die Strippen vom Arduino zu den Sensoren ziehen kannst:
Code: [Select]

Bus-Topologie (beste Lösung)
+------------+
|            |   lange Leitung             lange Leitung  
|            |-------------------------O------------------O
|            |                     Sensor1              Sensor2
+------------+


Stummel-Topologie (geht auch)
+------------+
|            |    lange Leitung         mittellang
|            |-------------------------+-----------O
|            |                         |        Sensor2  
+------------+                         |
                            mittellang|
                                      |
                                      O
                                    Sensor1


Diese beiden Arten der Verkabelung kannst Du verwenden.

Und diese Art der Verkabelung, bei der sich die Strippen zu den verschiedenen Sensoren gleich am Arduino verzweigen, sollte unbedingt vermieden werden:
Code: [Select]

Stern-Topologie (am schlechtesten)
+------------+
|            |    lange Leitung
|            |+-----------------------O Sensor1
|            | \  
+------------+  +---------------------O Sensor2
                 lange Leitung  


Und obwohl theoretisch die Möglichkeit besteht, die Sensoren mit "parasitärer Stromversorgung" zu betreiben, also ohne angeschlossene 5V-Leitung, solltest Du unbedingt 3-polig verkabeln, also GND, 5V und Datenleitung zu den Sensoren. Außerdem nicht den PullUp-Widerstand für die Datenleitung vergessen!

Und während Du Dich darum kümmserst, Deine beiden Temperatursensoren mit der realen Verkabelung und zunächst mal mit dem OneWire-Beispielprogramm in Betrieb zu nehmen, kümmere ich mich mal um eine kleine Controller-Software für
- Arduino-Board
- DS1307
- LCD-Keypad Shield
- und zwei DS18B20

Im Endeffekt werden solche "Steuercomputer mit Schaltung nach Zeit und Temperatur" hier fast jede Woche von irgendwem nachgefragt. Zwar möchte im Detail jeder etwas anderes, der eine die Zeit per RTC, der andere über NTP aus dem Internet, der eine will Heizgeräte nach Temperatur schalten, der nächste Lüfter nach Luftfeuchtigkeit, der nächste Pumpen nach Temperaturdifferenz und fast alle Licht nach Tageszeit. Der eine möchte Bedienung per Keypad-Shield, der andere über den seriellen Monitor und der nächste wieder über Internet, aber im Endeffekt kann man da ein modulares System aufbauen, bei dem dann einfach nur die passenden Module aktiviert werden, und fertig ist der Steuercomputer.

Ich überlege mir mal was.

skorpi08


Ich überlege mir mal was.


So kennt man den jurs,  er überlegt sich was und den anderen bleibt nur abwarten und tee trinken :)
Nicht Mensch, nicht Tier: Programmierer halt...

pidimarx

Danke erstmal für deine mühe jurs.

Kann ich die auch mit 3.3v versorgen?

Ich warte bestimmt nicht die ganze zeit ab den ich finde das Thema interessant und versuche mich rein zu lesen und Videos gucken.
Es ist halt kein einfaches Thema und es fordert einen sehr wenn man es selbstständig lernt. Ich gebe mein wissen auch gerne an andere weiter
und finde es cool wenn man auch mal dran ist.

MfG


pidimarx

so Menü ist dank Jamelo´s Hilfe jetzt fertig.
Wie bekomme ich die Adressen für die Temperatursensoren raus?
Habe beide wie beschrieben verkabelt und am digital 5 Ausgang dran

Code: [Select]
/*
POOLPUMPEN STEUERUNG MIT TDS UND ZEITSCHALTUHR
*/
#include <LiquidCrystal.h>
#include <LCDMenuLib.h>
#include <Wire.h>
#include <DS1307.h>

/*
* ===============================================
* Defines
* ===============================================
*/
/* Einstellungen fuer das verwendete LCD (16x2) */
#define _LCDMenuLib_cols                          16
#define _LCDMenuLib_rows                          2
/* Pin Belegung fuer das LCD */
#define _LCDMenuLib_PIN_rs                        8
#define _LCDMenuLib_PIN_e                         9
#define _LCDMenuLib_PIN_dat4                      4
#define _LCDMenuLib_PIN_dat5                      5
#define _LCDMenuLib_PIN_dat6                      6
#define _LCDMenuLib_PIN_dat7                      7
/*Pinbelegung Relais / Relais ansteuerung*/
#define RELAY_ON 0
#define RELAY_OFF 1

#define RELAY_1 3
#define RELAY_2 4
/*RTC*/
#define DS1307_ADDRESS 0x68
/* Scrollbar:
* Die neue Scrollbar belegt ca 1100 Bytes mehr an Speicherplatz wie die alte Scrollbalken.
* Wer den alte Scrollbalken wieder aktivieren will, muss in das Lib Verzeichnis gehen und unter
* ./LCDMenuLib/LCDMenuLib_config.h   
* den Wert _LCDMenuLib_cfg_scrollbar 1 in 2 verändern. Deaktivieren lässt sich die
* Scrollbar mit dem Wert 0
*/

/* Button press time gibt den puffer an nach welcher zeit der nächste
* Tastendruck gültig ist.
*/
#define _BUTTON_press_time                 200 //ms
/* Hier wird der Button Pin belegt, falls der Button Mode auf 1
* steht (Analoger Eingang), ansonsten ist die Variable unwichtig
*/
#define _BUTTON_PIN                        0 
/* Als nächstes werden hier die Bereiche definiert für welchen
* Wert welcher Button gültig ist.
*/
#define _BUTTON_enter_min                  742     // Button Enter
#define _BUTTON_enter_max                  762
#define _BUTTON_back_min                   506     // Button Back
#define _BUTTON_back_max                   526
#define _BUTTON_up_min                     144     // Button Up
#define _BUTTON_up_max                     164
#define _BUTTON_down_min                   331     // Button Down
#define _BUTTON_down_max                   351
#define _BUTTON_right_min                   0       // Button Right   
#define _BUTTON_right_max                   20
#define _BUTTON_left_min                   1000       // Button Left
#define _BUTTON_left_max                   1100


/*
* ===============================================
* Globale Variables
* ===============================================
*/
/* Button press Time, wird hiermit überprüft */
unsigned long g_button_press_time = 0;

/*
* ===============================================
* Initialisierung LCDMenuLib
* ===============================================
*/
/*
* Anzahl der Buttons - 1, da Null der erste Button ist
*/
#define _LCDMenuLib_cnt    13 
/*
* Initialisierung LCDMenu
*/
LCDMenuLib_init(_LCDMenuLib_cnt);
/* Nested Set Object
* Hier werden alle Sprachelemente definiert die im Programm vorkommen
* Die Bezeichnung sollte nicht länger sein, als das Display - 2 Zeichen
* Bei 20 Zeichen => 18 Zeichen für die Bezeichnung
* Bei 16 Zeichen => 14 Zeichen für die Bezeichnung
*
* Item 0 ist die oberste Ebene
* in der obersten Ebene wird ein Elemtnt mit dem Namen Item1 angelegt
* danach wird ein weiteres item angelegt (Item2) das sich auch in Ebene 0 befindet
*
* das Item liegt in Ebene 0
* Alle Items die eine Zahl hinterm Namen haben liegen in Ebene 1
* Alle Items die zwei Zahlen hinterm Namen haben liegen in Eben 2 
* usw.
*/
LCDMenuLib_element(0  , Item         , Item_1          , "Info"                          , FUNC); // Pumpe 1 und 2 an aus temp sensor 1 und 2 kurz P1 I/O P2 I/O S1 °C S2 °C
LCDMenuLib_element(1  , Item         , Item_2          , "Uhrzeit Datum"                 , FUNC); //RTC Lesen
LCDMenuLib_element(2  , Item         , Item_3          , "Einstellungen"                 , FUNC);
LCDMenuLib_element(3  , Item_3       , Item_3_1        , "Pumpen ON/OFF"                 , FUNC);
LCDMenuLib_element(4  , Item_3       , Item_3_1_1      , "P-Pumpe ON/OFF"                , FUNC); //RELAIS 1 AN/AUS
LCDMenuLib_element(5  , Item_3       , Item_3_1_2      , "S-Pumpe ON/OFF"                , FUNC); //RELAIS 2 AN/AUS
LCDMenuLib_element(6  , Item_3       , Item_3_2        , "Zeitschaltuhr"                 , FUNC);
LCDMenuLib_element(7  , Item_3       , Item_3_2_1      , "Pumpe 1 ON"                    , FUNC); //Zeit Relais an
LCDMenuLib_element(8  , Item_3       , Item_3_2_2      , "Pumpe 1 OFF"                   , FUNC); //Zeit Relais aus
LCDMenuLib_element(9  , Item_3       , Item_3_3        , "TDS"                           , FUNC);
LCDMenuLib_element(10 , Item_3       , Item_3_3_1      , "Temp S1 &S2"                   , FUNC); //read sensor1 read sensor2
LCDMenuLib_element(11 , Item_3       , Item_3_3_2      , "Config TDS"                    , FUNC);
LCDMenuLib_element(12 , Item_3       , Item_3_3_3      , "Pumpe ON +10°C"                , FUNC); //Differenz A1 zu A2 10°C Solar Pumpe ON
LCDMenuLib_element(13 , Item_3       , Item_3_3_4      , "Timer S-Pumpe"                 , FUNC); //Timer los wenn pumpe an, aus wenn aus
LCDMenuLib_createMenu(_LCDMenuLib_cnt);


/*
* ===============================================
* SETUP
* ===============================================
*/
void setup()
{
  /* Setup for LcdMenuLib */
  LCDMenuLib_setup(_LCDMenuLib_cnt);
  //Serial.begin(9600);   
}
void ButtonAnalog()
  {
    uint16_t value = analogRead(_BUTTON_PIN);
   
    if(LCDML.Timer(g_button_press_time, _BUTTON_press_time))
    {
      if(value >= _BUTTON_enter_min && value <= _BUTTON_enter_max)
      {
        LCDML.Button_enter();
      }
      else if(value >= _BUTTON_up_min && value <= _BUTTON_up_max)
      {
        LCDML.Button_up();
      }
      else if(value >= _BUTTON_down_min && value <= _BUTTON_down_max)
      {
        LCDML.Button_down();
      }
      else if(value >= _BUTTON_left_min && value <= _BUTTON_left_max)
      {
        LCDML.Button_left();
      }
      else if(value >= _BUTTON_right_min && value <= _BUTTON_right_max)
      {
         LCDML.Button_right();
      }
      if(value >= _BUTTON_back_min && value <= _BUTTON_back_max)
      {
        LCDML.Button_quit();
      }
    }
  }
/*
* ===============================================
* LOOP
* ===============================================
*/
void loop()
{
  ButtonAnalog();

  //LCDMenuLib_ButtonSerial();   
  LCDMenuLib_loop(); 

Go Up