#include <Keypad.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(23, 25, 27, 29, 31, 33);
const int Nuss1 = 2; // Pumpe1
const int Nuss2 = 3; // Pumpe2
const int Nuss3 = 4; // Pumpe3
const int Nuss4 = 5; // Pumpe4
const int Nuss5 = 6; // Pumpe5
const int Nuss6 = 7; // Pumpe6
const int Nuss7 = 8; // Pumpe7
const int Nuss8 = 9; // Pumpe8
const int Nuss9 = 10; // Pumpe9
const int Nuss10 = 11; // Pumpe10
const int Umwalz = A4; //Pumpe auf Verteiler
int TVerteiler = A2; //Fühler auf Verteiler
const int Kuehlung = 22; //Kühlung
const int Licht = 24; //Relais Licht
const int RE3 = 26; //reserve Relais
const int RE5 = 28; //reserve Relais
const int LED = A3; //LED Lüfter
const int Schwimmer = 30; //Tank Leer
const int Tank = 32; //kein Tank
int TSumpf = A0; //Fühler Kühlsumpf
int LSumpf = 12; //Lüfter Leisungsvernichtung
int WerteSumpf; //Ein Aus Lüfter
int DrehzSumpf; //Ein Aus Lüfter
int TKond = A1; //Fühler Kühlsumpf
int LKond = 13; //Lüfter Kondensator
int WerteKond; //Ein Aus Lüfter
int DrehzKond; //Ein Aus Lüfter
const byte ROWS = 4; // 4Reihen
const byte COLS = 4; // 4Spalten
// Nummerschild Definieren
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'#', '0', '*', 'D'}
};
// Anschlusspins Reihe
byte rowPins[ROWS] = { 49, 47, 45, 43 };
// Anschlusspins Spalte
byte colPins[COLS] = { 41, 39, 37, 35 };
// Create the Keypad
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
bool geschaltet = false;
bool aGedrueckt = false;
bool bGedrueckt = false;
bool cGedrueckt = false;
bool dGedrueckt = false;
unsigned long startZeit;
int empfindlichkeit = 200;
void setup()
{
pinMode(Nuss1, OUTPUT); // Pumpe an
analogWrite(Nuss1, LOW); //Pumpe aus
pinMode(Nuss2, OUTPUT); // Pumpe an
analogWrite(Nuss2, LOW); // Pumpe aus
pinMode(Nuss3, OUTPUT); // Pumpe an
analogWrite(Nuss3, LOW); // Pumpe aus
pinMode(Nuss4, OUTPUT); // Pumpe an
analogWrite(Nuss4, LOW); // Pumpe aus
pinMode(Nuss5, OUTPUT); // Pumpe an
analogWrite(Nuss5, LOW); // Pumpe aus
pinMode(Nuss6, OUTPUT); // Pumpe an
analogWrite(Nuss6, LOW); // Pumpe aus
pinMode(Nuss7, OUTPUT); // Pumpe an
analogWrite(Nuss7, LOW); // Pumpe aus
pinMode(Nuss8, OUTPUT); // Pumpe an
analogWrite(Nuss8, LOW); // Pumpe aus
pinMode(Nuss9, OUTPUT); // Pumpe an
analogWrite(Nuss9, LOW); // Pumpe aus
pinMode(Nuss10, OUTPUT); // Pumpe an
analogWrite(Nuss10, LOW); // Pumpe aus
pinMode(Umwalz, OUTPUT); // Pumpe auf Verteiler aus
digitalWrite(Umwalz, HIGH); // Pumpe auf Verteiler aus beim Starten
pinMode(Kuehlung, OUTPUT); // Kühlung
digitalWrite(Kuehlung, HIGH); // Kühlung an bei Start
pinMode(Licht, OUTPUT); //Relais Licht
digitalWrite(Licht, HIGH); //Licht an
pinMode(LED, OUTPUT); //LED Lüfter
digitalWrite(LED, HIGH); //LED Lüfter AN
pinMode(Schwimmer, INPUT_PULLUP); // Schwimmer = Schalter
pinMode(Tank, INPUT_PULLUP); // Tank kontakt = Schalter
pinMode(TSumpf, INPUT); // Fühler = Analoger Eingang
pinMode(LSumpf, OUTPUT); // Lüfter Sumpf = Ausgang
pinMode(TKond, INPUT); // Fühler = Analoger Eingang
pinMode(LKond, OUTPUT); // Lüfter Kondensator = Ausgang
pinMode(Umwalz, OUTPUT); // Pumpe auf Verteiler aus
digitalWrite(Umwalz, HIGH); // Pumpe auf Verteiler aus beim Starten
delay(2000); //Zeit für Umwalzen
digitalWrite(Umwalz, LOW); //Umwälzpume aus
lcd.begin(16, 2);
Serial.begin(9600);
}
void loop()
{
char key = kpd.getKey();
if (key)
{
switch (key)
{
case '1':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
}
}
}
{
switch (key)
{
case '2':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
}
}
}
{
switch (key)
{
case '3':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
}
}
}
{
switch (key)
{
case '4':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
}
}
}
{
switch (key)
{
case '5':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
}
}
}
{
switch (key)
{
case '6':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
analogWrite(Nuss6, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
analogWrite(Nuss6, 0);
}
}
}
{
switch (key)
{
case '7':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
analogWrite(Nuss6, 255);
analogWrite(Nuss7, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
analogWrite(Nuss6, 0);
analogWrite(Nuss7, 0);
}
}
}
{
switch (key)
{
case '8':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
analogWrite(Nuss6, 255);
analogWrite(Nuss7, 255);
analogWrite(Nuss8, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
analogWrite(Nuss6, 0);
analogWrite(Nuss7, 0);
analogWrite(Nuss8, 0);
}
}
}
{
switch (key)
{
case '9':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
analogWrite(Nuss6, 255);
analogWrite(Nuss7, 255);
analogWrite(Nuss8, 255);
analogWrite(Nuss9, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
analogWrite(Nuss6, 0);
analogWrite(Nuss7, 0);
analogWrite(Nuss8, 0);
analogWrite(Nuss9, 0);
}
}
}
{
switch (key)
{
case '0':
if (digitalRead(Schwimmer) == HIGH)
{
analogWrite(Nuss1, 255);
analogWrite(Nuss2, 255);
analogWrite(Nuss3, 255);
analogWrite(Nuss4, 255);
analogWrite(Nuss5, 255);
analogWrite(Nuss6, 255);
analogWrite(Nuss7, 255);
analogWrite(Nuss8, 255);
analogWrite(Nuss9, 255);
analogWrite(Nuss10, 255);
lcd.setCursor(0, 0);
lcd.print("ein Schnaps");
lcd.setCursor(0, 1);
lcd.print("kommt sofort");
delay(2000);
lcd.clear();
analogWrite(Nuss1, 0);
analogWrite(Nuss2, 0);
analogWrite(Nuss3, 0);
analogWrite(Nuss4, 0);
analogWrite(Nuss5, 0);
analogWrite(Nuss6, 0);
analogWrite(Nuss7, 0);
analogWrite(Nuss8, 0);
analogWrite(Nuss9, 0);
analogWrite(Nuss10, 0);
}
}
}
{
WerteSumpf = analogRead(TSumpf);
if(WerteSumpf >1023) { //Temp Lüfter100%
WerteSumpf = 1023; //Temp Lüfter100%
}
DrehzSumpf = map(WerteSumpf, 0, 1023, 255, 0);
//Temp Lüfter bei Start, Temp Lüfter100%,max 1023
//Drehzahl Lüfter bei Start, Drehzahl Lüfter 100% max255
if(WerteSumpf <0) { //Temp Lüfter0%
DrehzSumpf = 0; //unter oberen wert diesen wert 0%
}
analogWrite(LSumpf, DrehzSumpf);
}
{
WerteKond = analogRead(TKond);
if(WerteKond >1023) { //Temp Lüfter100%
WerteKond = 1023; //Temp Lüfter100%
}
DrehzKond = map(WerteKond, 1023, 0, 255, 0
);
//Temp Lüfter bei Start, Temp Lüfter100%,max 1023
//Drehzahl Lüfter bei Start, Drehzahl Lüfter 100% max255
if(WerteKond <0) { //Temp Lüfter0%
DrehzKond = 0; //unter oberen wert diesen wert 0%
}
analogWrite(LKond, DrehzKond);
}
{
if (digitalRead(Schwimmer) == LOW)
{lcd.setCursor(0, 0);
lcd.print("Tank Leer");}
else
{lcd.setCursor(0, 0);
lcd.print(" ");}
}
{
if (digitalRead(Tank) == HIGH)
{lcd.setCursor(0, 1);
lcd.print("kein Tank");}
else
{lcd.setCursor(0, 1);
lcd.print(" ");}
}
{if (digitalRead(Kuehlung) == HIGH)
{lcd.setCursor(15, 0);
lcd.print("*");}
else
{lcd.setCursor(15, 0);
lcd.print(" ");}
}
if (key == 'A') // Taste gedrückt?
{
if (!aGedrueckt) // vorher nicht gedrueckt?
{
aGedrueckt = true; // merken
{ digitalWrite(Licht, !digitalRead(Licht)); }
{ digitalWrite(LED, !digitalRead(LED)); }
}
}
else // Taste losgelassen?
{
aGedrueckt = false; // Merker löschen
}
if (key == 'B') // Taste gedrückt?
{
if (!bGedrueckt) // vorher nicht gedrueckt?
{
bGedrueckt = true; // merken
{ digitalWrite(Umwalz, !digitalRead(Umwalz)); }
}
}
else // Taste losgelassen?
{
bGedrueckt = false; // Merker löschen
}
{
if (key == 'C') // Taste gedrückt?
{
if (!cGedrueckt) // vorher nicht gedrueckt?
{
cGedrueckt = true; // merken
{ digitalWrite(Kuehlung, !digitalRead(Kuehlung)); } // schaltet mit jedem Tastendruck um
}
}
else // Taste losgelassen?
{
cGedrueckt = false; // Merker löschen
}
}
{if (analogRead(TVerteiler) >500) //0-1023 einschaltwert
{digitalWrite(Umwalz, LOW);}
if (analogRead(TVerteiler) <400) //0-1023 ausschaltwert
{digitalWrite(Umwalz, HIGH);}
}
{if (digitalRead(Umwalz) == HIGH)
{lcd.setCursor(14, 0);
lcd.print("u");}
else
{lcd.setCursor(14, 0);
lcd.print(" ");}
}
if (key == 'D') // Taste gedrückt?
{
if (!dGedrueckt) // vorher nicht gedrückt?
{
dGedrueckt = true; // merken, das
startZeit = millis(); // merken, wann gedrückt
}
}
else if (dGedrueckt) // Taste losgelassen und vorher gedrückt?
{
if (millis() - startZeit > 3000) // Drückzeit feststellen
{
digitalWrite(Umwalz, HIGH); // Wenn lang
}
else
{
digitalWrite(Umwalz, LOW); // wenn kürzer
}
dGedrueckt = false; // Merker löschen
}
}
Umwalz soll am Anfang für 2 sek laufen,
dann mit einem Fühler auf pin A2 ab einer gewissen Temperatur laufen
und mit Taste D mit einem Langen druck gemeinsam mit Allen Pumpen laufen
und mit Taste B ein und aus geschaltet werden
Die ganze Anlage dient zum herunterlassen vom Nussschnaps für 1-10 Stamperl