also einfach mal durchschauen und zur not verbessern 
Hab die Schaltung erst mal nur mit den 3 Ventilen aufgebaut und als Taster LED´s dran
der code
#include <IRremote.h> // Das Programm greift an dieser Stelle auf eine „Library“ zurück. Das erleichtert einem viel Arbeit. Denn das Infrarotlicht wird mit einem Code verschlüsselt gesendet. Um diesen Code selber auszulesen und in passende Werte umzuwandeln, wären sehr viele Zeilen Code erforderlich.
int RECV_PIN = 7; // Der Kontakt der am Infrarotsensor die Daten ausgibt, wird mit Pin 11 des Arduinoboards verbunden.
IRrecv irrecv(RECV_PIN); // An dieser Stelle wird ein Objekt definiert, dass den Infrarotsensor an Pin 11 ausliest.
decode_results results; // Dieser Befehl sorgt dafür, dass die Daten, die per Infrarot eingelesen werden unter „results“ abgespeichert werden.
int LED6 = 6; // LED Pin Ventil 1 IR Anzeige
int LED5 = 5; // LED Pin Ventil 2 IR Anzeige
int LED4 = 4; // LED Pin Ventil 3 IR Anzeige
int LED3 = 3; // Led PIN ALLE Ventile IR Test durchlauf
const int blinkInterval = 500;
long timeVentil1on = 1000;
long pause1 = 100;
long timeVentil2on = 1000;
long pause2 = 100;
long timeVentil3on = 1000;
const byte taster = 2;
const byte ventil1 = 9;
const byte ventil2 = 10;
const byte ventil3 = 11;
const byte ledRot = 12;
const byte ledGruen = 8;
boolean buttonState;
boolean lastButtonState;
void setup()
{
Serial.begin(9600); //Im Setup wird die Serielle Verbindung gestartet, damit man sich die Empfangenen Daten der Fernbedienung per seriellen Monitor ansehen kann.
pinMode (6, OUTPUT); //An Pin 6 ist eine LED angeschlossen zum test des IR .
digitalWrite(6, LOW); //Diese soll zunächst aus sein
pinMode (5, OUTPUT); //An Pin 6 ist eine LED angeschlossen zum test des IR .
digitalWrite(5, LOW); //Diese soll zunächst aus sein
pinMode (4, OUTPUT); //An Pin 6 ist eine LED angeschlossen zum test des IR .
digitalWrite(4, LOW); //Diese soll zunächst aus sein
pinMode (3, OUTPUT); //An Pin 6 ist eine LED angeschlossen zum test des IR .
digitalWrite(3, LOW); //Diese soll zunächst aus sein
irrecv.enableIRIn(); //Dieser Befehl initialisiert den Infrarotempfänger.
pinMode(taster, INPUT_PULLUP);
pinMode(ventil1, OUTPUT);
pinMode(ventil2, OUTPUT);
pinMode(ventil3, OUTPUT);
pinMode(ledRot, OUTPUT);
pinMode(ledGruen, OUTPUT);
}
void loop()
{
if (irrecv.decode(&results))
{
irrecv.resume(); // Das Signal empfangen
}
switch(results.value) // Abhaengig vom Signal in den richtigen Modus springen
{
/************************************Ventil 1********************************/
case 2534850111://Wenn der Infrarotempfänger die Zahl
//„2534850111“ ausgelesen hat (Entsprechend der Taste“1“ auf der Fernbedienung)
//dann
Serial.println("Ventil 1"); // Ausgabe auf der Seriellenschnittstelle
digitalWrite (6, LOW);//soll die LED an pin 6 angehen.
digitalWrite(ledGruen, LOW);
digitalWrite(ledRot, HIGH);
digitalWrite(ventil1, HIGH);
delay(timeVentil1on);
digitalWrite(ventil1, LOW);
delay(pause1);
break;
/************************************Ventil 1 ENDE********************************/
/************************************Ventil 2 ********************************/
case 1033561079: //Wenn der Infrarotempfänger die Zahl
//„1033561079“ ausgelesen hat (Entsprechend der Taste“2“ auf der Fernbedienung)
//dann
digitalWrite (5, LOW);//soll die LED an pin 5 angehen.
Serial.println("VENTIL 2"); // Ausgabe auf der Seriellenschnittstelle
digitalWrite(ledGruen, LOW);
digitalWrite(ledRot, HIGH);
digitalWrite(ventil2, HIGH);
delay(timeVentil2on);
digitalWrite(ventil2, LOW);
delay(pause2);
break;
/************************************Ventil 2 ENDE ********************************/
/************************************Ventil 3 ********************************/
case 1635910171: //Wenn der Infrarotempfänger die Zahl
//„1635910171“ ausgelesen hat (Entsprechend der Taste“3“ auf der Fernbedienung)
//dann
digitalWrite (4, LOW);//soll die LED an pin 4 angehen.
Serial.println("VENTIL 3"); // Ausgabe auf der Seriellenschnittstelle
digitalWrite(ledGruen, LOW);
digitalWrite(ledRot, HIGH);
digitalWrite(ventil3, HIGH);
delay(timeVentil3on);
digitalWrite(ventil3, LOW);
digitalWrite(ledRot, LOW);
break;
/************************************Ventil 3 ENDE ********************************/
/************************************Ventil TEST ALLE ********************************/
case 3855596927: //Wenn der Infrarotempfänger die Zahl
//„3855596927“ ausgelesen hat (Entsprechend der Taste“EQ“ auf der Fernbedienung)
//dann
digitalWrite (3, LOW);//soll die LED an pin 4 angehen.
Serial.println("VENTILE Test"); // Ausgabe auf der Seriellenschnittstelle
digitalWrite(ledGruen, LOW);
digitalWrite(ledRot, HIGH);
digitalWrite(ventil1, HIGH);
delay(timeVentil1on);
digitalWrite(ventil1, LOW);
delay(pause1);
digitalWrite(ventil2, HIGH);
delay(timeVentil2on);
digitalWrite(ventil2, LOW);
delay(pause2);
digitalWrite(ventil3, HIGH);
delay(timeVentil3on);
digitalWrite(ventil3, LOW);
digitalWrite(ledRot, LOW);
break;
/************************************Ventil TEST ENDE ********************************/
default: // Standard
digitalWrite(LED6, HIGH);
digitalWrite(LED5, HIGH);
digitalWrite(LED4, HIGH);
digitalWrite(LED3, HIGH);
}
buttonState = digitalRead(taster);
if (buttonState == LOW && buttonState != lastButtonState) // Taster wurde gedrueckt
{ action();
}
digitalWrite(ledGruen, millis()/blinkInterval%2); // die gruene LED blinkt (nicht-blockierend)
lastButtonState = buttonState;
}
void action() // diese Funktion ist blockierend
{ digitalWrite(ledGruen, LOW);
digitalWrite(ledRot, HIGH);
digitalWrite(ventil1, HIGH);
delay(timeVentil1on);
digitalWrite(ventil1, LOW);
delay(pause1);
digitalWrite(ventil2, HIGH);
delay(timeVentil2on);
digitalWrite(ventil2, LOW);
delay(pause2);
digitalWrite(ventil3, HIGH);
delay(timeVentil3on);
digitalWrite(ventil3, LOW);
digitalWrite(ledRot, LOW);
}
und es geht auch alles . Denke zwar das ist nicht formschön aber die Funktion geht 