Pool-pumpen Steuerung mit TDS und Zeitschaltuhr hilfe beim programmieren

So ich hoffe mal das das so funktioniert:

Display :

Digital 8-13
Aref
GND
Analog 0

Ralais :
5V
GND
Digital 1
Digital 2

RTC
5V
GND
ANALOG 1
ANALOG 2

Einen sketch für die RTC hab ich auch schon gefunden.

Es sei den du verwendest eine SoftI2C Library wird die RTC an A4 (SDA) und A5 (SCL) angeschlossen. Das ist die Hardware I2C Schnittstelle

Wenn du die Time-Library verwendest, nehme am besten das hier:
http://www.pjrc.com/teensy/td_libs_DS1307RTC.html

Da wird gleich das TimeElements struct und time_t unterstützt. Lediglich die RAM-Nutzung ist nicht implementiert, aber wenn man das braucht kann man es auch leicht selbst machen wenn man die Start-Adresse beim Lesen und Schreiben entsprechend setzt. Siehe Datenblatt für die Register.

Die präziseren RTCs funktionieren genauso und haben lediglich mehr Register für mehr Einstellungen. Datum und Uhrzeit werden an der gleichen Stelle gespeichert, daher sind die Libs grundlegend kompatibel. Lediglich das Clock Halt Bit im Sekunden-Register fehlt (statt dessen ist das im Control-Register) und das Month-Register hat an zusätzliches Century-Bit. Das sollte aber keinen Unterschied machen und wenn doch kann man es leicht anpassen.

Hey,
Hab mir das ganze jetzt eine zeit lang angesehen und habe auch mit mehreren Codes Sachen ausprobiert wie Relais schalten Display ansteuern usw.
bekomme aber keinen vernünftigen Code zum Menü aufbau zum laufen womit ich die Relais mal vom Display aus schalten kann.
desweiteren habe ich bis jetzt nichts richtiges gefunden wie ich den arduino zählen lassen kann das ich mal eine Uhr simulieren kann.
So richtig bin ich mir auch nicht sicher mit dem codieren....

eigentlich wollte ich das Projekt diesen sommer am laufen haben aber so schnell lernt man das nicht : (

@pidimarx
Siehe Time Library:
http://www.pjrc.com/teensy/td_libs_Time.html

Da kannst du die Zeit mit dem Arduino-Takt zählen lassen ohne RTC

void printTime(uint8_t col, uint8_t row)
{
	_lcd.setCursor(col, row);
	printDigits(hour());
	_lcd.printByte(':');
	printDigits(minute());
	_lcd.printByte(':');
         printDigits(second());
}

void printDate(uint8_t col, uint8_t row)
{
	_lcd.setCursor(col, row);
	printDigits(day());
	_lcd.printByte('.');
	printDigits(month());
	_lcd.printByte('.');
         printDigits(year() - 2000);
}

void printDigits(int digits)
{
  // utility function for digital clock display. Prints leading 0
  if(digits < 10)
	 _lcd.printByte('0');
  _lcd.print(digits, DEC);
}

Ich führe das dann einfach jede Sekunde aus

Ein richtiges Menü zu erstellen ist in der Tat komplizierter. Da muss man sich die z.B. eine Cursor-Position merken und dann je nachdem verschiedene Aktionen ausführen. Bei mir zähle ich da einfach einen Index mit den ich über ein Array aus Koordinaten auf Display-Adressen umsetze. Dann weiß ich über den Index auf welcher Funktion ich bin und kann entsprechend den Display-Inhalt ändern.

Wenn man ein Leerzeichen schreibt wird der Inhalt der Adresse praktisch gelöscht. Dadurch kann man dann z.B. ein Zeichen ein und aus Schalten (das dir deinen Relais-Zustand angibt). So ähnlich:

  • Zustand des Relais mit einer bool-Variable merken
  • Je nach Zustand des bools bei Tastendruck das Display auf den jeweils anderen Zustand schalten (bei mir habe ich da einen Haken als CustomCharacter)

Versuchs vielleicht mit was fertigem:
http://forum.arduino.cc/index.php/topic,73816.0.html

hey danke erstmal für deine mühe!
Den Thread mit dem menü habe ich auch schon gefunden aber da hat einfaches copy and paste nicht funktioniert um es einfach mal auszuprobieren.
wie gesagt das ist alles neu für mich und die fachausdrücke muss ich auch erst mal googeln.. ; )

so habe mir mal das Menü aufgebaut wie ich es gerne hätte aber bekomme nur Fehlermeldungen und weiss nicht genau was die bedeuten.
hier mal der code :

/* ===============================================
 * Example: LCDMenuLib (german doku)
 * ===============================================
 * Autor:     Nils Feldkämper
 * Email:     nilsfeld@gmail.com
 * License:   all Free
 * Last edit: 19.06.2013
 */ 

/* 
 * ===============================================
 * Includes
 * =============================================== 
 */
#include <LiquidCrystal.h>
#include <LCDMenuLib.h>

/* 
 * ===============================================
 * Defines
 * =============================================== 
 */
/* Einstellungen für das verwendete LCD (20x4) */
#define _LCDMenuLib_cols                          20
#define _LCDMenuLib_rows                          4
/* Pin Belegung für 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 
/* 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                  850     // Button Enter
#define _BUTTON_enter_max                  920  
#define _BUTTON_back_min                   950     // Button Back
#define _BUTTON_back_max                   1020  
#define _BUTTON_up_min                     520     // Button Up
#define _BUTTON_up_max                     590  
#define _BUTTON_down_min                   700     // Button Down
#define _BUTTON_down_max                   770      
#define _BUTTON_left_min                   430     // Button Left
#define _BUTTON_left_max                   500  
#define _BUTTON_right_min                  610     // Button Right
#define _BUTTON_right_max                  680     

/* 
 * ===============================================
 * 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    16  
/* 
 * 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_information); // Pumpe 1 und 2 an aus temp sensor 1 und 2
  LCDMenuLib_element(1  , Item         , Item_2          , "Uhrzeit Datum"                 , FUNC_timer_info); //RTC Lesen
  LCDMenuLib_element(2  , Item         , Item_3          , "Einstellungen"                 , FUNC);
  LCDMenuLib_element(2  , Item         , Item_3_1        , "Pumpen ON/OFF"                 , FUNC);
  LCDMenuLib_element(3  , Item_3       , Item_3_2        , "Pool Pumpe ON/OFF"             , FUNC); //RELAIS 1 AN/AUS
  LCDMenuLib_element(4  , Item_3       , Item_3_2_1      , "Solar Pumpe ON/OFF"            , FUNC); //RELAIS 2 AN/AUS
  LCDMenuLib_element(4  , Item_3       , Item_3_1_1      , "Zeitschaltuhr"                 , FUNC);
  LCDMenuLib_element(5  , Item         , Item_3_1_1_1    , "Pumpe 1 ON "Uhrzeit""          , FUNC); //Zeit Relais an
  LCDMenuLib_element(6  , Item_4       , Item_3_1_1_2    , "Pumpe 1 OFF "Uhrzeit""         , FUNC); //Zeit Relais aus
  LCDMenuLib_element(7  , Item_4_1     , Item_3_1_2      , "Temperatur Schaltung"          , FUNC);
  LCDMenuLib_element(8  , Item_4_1     , Item_3_1_2_1    , "Temperatur Sensor1 Sensor2"    , FUNC); //read sensor1 read sensor2
  LCDMenuLib_element(9  , Item_4_1_2   , Item_3_1_2_2    , "Einstellung TDS"               , FUNC);
  LCDMenuLib_element(10 , Item_4_1_2   , Item_3_1_3_1    , "Pumpe ON @ + 10°C"             , FUNC); //Differenz A1 zu A2 10°C Solar Pumpe ON
  LCDMenuLib_element(11 , Item_4       , Item_3_1_3_2    , "Timer Solar pumpe "Zeit""      , 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();  
  }

"Fehlermeldungen" ist etwas sehr Abstraktes. Gib uns mal alle Fehlermeldungen. Hast Du die Bibliothek richtig instaliert?
Grüße Uwe

ja die bibliothek ist richtig drin.
habe auch ein problem bei den tasten, ich habe ja effektiv nur 4 pfeiltasten+ enter aber wie gehe ich zurück?
habe an sowas gedacht wie, lange enter halten oder so aber der wert der taste verändert sich ja nicht wenn man die lange hält?

oder abspeichern nach x Sekunden nach dem letzten Tastenbetätigung.
Grüße Uwe

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

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

  #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

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

#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

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...

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.

Press time ist dazu da, damit die taste nur einmal gedrückt wird und nicht mehrmals/ dadurch wird autofeuer verhindert.

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?

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.

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

#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();  
}

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.

pidimarx:
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?

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