/*-----[ Bibliotheken einlesen )-----*/ #include #include #include #include #define ADDR_RTCDS3231 0x68 #include #include #include //LiquidCrystal_I2C lcd(0x3f,20,4); // set the LCD address to 0x27 for a 20 chars and 4 line display LiquidCrystal_I2C lcd(0x3f, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address byte decToBcd(byte val) { return ( (val / 10 * 16) + (val % 10) ); } byte bcdToDec(byte val) { return ( (val / 16 * 10) + (val % 16) ); } /*-----[ Variablen deklarieren )-----*/ const int tasterm = 12; // Taster Mitte const int tastero = 11; // Taster oben const int tasterl = 10; // Taster links //Taster an Pin 10 für Backlight ON NEU const int tasteru = 9; // Taster unten const int tasterr = 8; // Taster rechts int DisplaySchalter = 0; // Variable fuer den Zustand des Display-Tasters NEU long DisplayAus = 0; // NEU int pumpe1 = 7; // Pumpe 1 Ausgang int pumpe2 = 6; // Pumpe 2 Ausgang int pumpe3 = 5; // Pumpe 3 Ausgang int pumpschutz1 = 0; int pumpschutz2 = 0; int pumpschutz3 = 0; int x = 1; int y = 0; long pumpleistung1; long pumpleistung2; long pumpleistung3; int pumpe1_time_h = EEPROM.read(3); int pumpe2_time_h = EEPROM.read(4); int pumpe3_time_h = EEPROM.read(5); int pumpe1_time_m = EEPROM.read(6); int pumpe2_time_m = EEPROM.read(7); int pumpe3_time_m = EEPROM.read(8); int pumpe1_ml = EEPROM.read(0); int pumpe2_ml = EEPROM.read(1); int pumpe3_ml = EEPROM.read(2); int pumpe1_ml_s = EEPROM.read(9); int pumpe2_ml_s = EEPROM.read(10); int pumpe3_ml_s = EEPROM.read(11); int Std = 0; int Min = 0; int Tag = 1; int Mon = 1; int Jahr = 2000; char pause_hour = 0; char pause_min = 0; char pause_day = 0; char pause_month = 0; /*-----[ Zeitmodul DS3231 einlesen und aktivieren )-----*/ void setDS3231time(int second, int minute, int hour, int ndofweek, int dday, int dmonth, int dyear) { Wire.beginTransmission(ADDR_RTCDS3231); Wire.write(0); Wire.write(decToBcd(second)); // Sekunden setzen Wire.write(decToBcd(minute)); // Minuten setzen Wire.write(decToBcd(hour)); // Stunden setzen Wire.write(decToBcd(ndofweek)); // Wochentag setzen Wire.write(decToBcd(dday)); // Tag setzen Wire.write(decToBcd(dmonth)); // Monat setzen Wire.write(decToBcd(dyear)); // Jahr Setzen //Wire.endTransmission(); } /*-----[ Einstellungen einlesen )-----*/ void setup(void) { Serial.begin(9600); setSyncProvider(RTC.get); // Funktion zum RTC Modul if (timeStatus() != timeSet) Serial.println("Zum synchronisieren mit dem RTC Modul"); else Serial.println("Zeit und Datum wurden gespeichert"); // Ausgänge festlegen pinMode(pumpe1, OUTPUT); digitalWrite(pumpe1, HIGH); pinMode(pumpe2, OUTPUT); digitalWrite(pumpe2, HIGH); pinMode(pumpe3, OUTPUT); digitalWrite(pumpe3, HIGH); // Eingänge Festlegen pinMode(tasterm, INPUT); pinMode(tastero, INPUT); pinMode(tasterl, INPUT); pinMode(tasteru, INPUT); pinMode(tasterr, INPUT); //lcd.int(); lcd.backlight(); // LCD Hintergrundbeleuchtung NEU lcd.begin(20, 4); // LCD Inizialisieren /*-----[ Bildschirm aufbauen )-----*/ lcd.setCursor(0, 1); lcd.print("- Arduino -"); lcd.setCursor(2, 2); lcd.print("Aqua Dosierpumpe"); lcd.setCursor(0, 3); lcd.print(" ~ Setup o Info"); DisplayAus = now() + 30; // NEU pinMode(tasterl, INPUT); // Port definieren NEU } void loop() { if (hour() < 10) { // wenn kleiner 10 schreibe eine 0 davor lcd.setCursor(0, 0); lcd.print("0"); pause_hour = 1; } else pause_hour = 0; if (minute() < 10) { // wenn kleiner 10 schreibe eine 0 davor lcd.setCursor(3, 0); lcd.print("0"); pause_min = 4; } else pause_min = 3; if (day() < 10) { // wenn kleiner 10 schreibe eine 0 davor lcd.setCursor(10, 0); lcd.print("0"); pause_day = 11; } else pause_day = 10; if (month() < 10) { // wenn kleiner 10 schreibe eine 0 davor lcd.setCursor(13, 0); lcd.print("0"); pause_month = 14; } else pause_month = 13; lcd.setCursor(5, 0); lcd.print(" "); lcd.setCursor(pause_hour, 0); //Start at character 4 on line 0 lcd.print(hour()); lcd.print(":"); lcd.setCursor(pause_min, 0); lcd.print(minute()); lcd.setCursor(pause_day, 0); lcd.print(day()); lcd.print("."); lcd.setCursor(pause_month, 0); lcd.print(month()); lcd.print("."); lcd.print(year()); if (digitalRead(tasterr) == HIGH)hauptmenue(1); if (digitalRead(tasterm) == HIGH)uebersicht(1) ; DisplaySchalter = digitalRead(tasterl); //NEU if (DisplaySchalter == HIGH) { //NEU DisplayAus = now() + 30; //NEU } //NEU if (now() > DisplayAus) { lcd.noBacklight(); } else { lcd.backlight(); } //NEU