2 Ausgänge mit einen Taster

Kleines Beispiel zu meinem Ansatz. Anstatt direkt if (tasterabfrage) -> Relais = high oder low würde ich das ganze auftrennen:

int relaisPin [] = {x, y, z …};				// deklariert ein Array mit den Pins, an die deine Relais angeschlossen sind
byte relaisState = B00000000;				// deklariert Variable, in der festgehalten wird, ob das Relais angezogen werden soll oder nicht. Jede Ziffer der Binärzahl steht für ein Relais, 1 = eingeschaltet, 0 = ausgeschaltet, von rechts nach links.

void setup {
	// setup
}

void loop () {
	
	poll();									// hierfür eine lustige Funktion schreiben, die deine Taster abfragt und gegebenenfalls in einer Variablen speichert
	if (Taste 1 gedrückt) {							// hier wird auf die Tasteninputs reagiert und die Variable relaisState verändert. Somit kannst du so viele Taster, wie du willst, so viele Dinge tun lassen, wie du willst.
		relaisState = relaisState ^ B00000100;		// z.B. wird hier Relais Nr. 3 umgeschaltet
	}
	if (Taste 2 gedrückt) {
		relaisState = relaisState ^ B00000011;		// da werden Relais 1 und 2 umgeschaltet.
	}										// so kannst du auch Infraroteingaben, Mikrofongeräusche und alles Mögliche auch nachträglich noch einbauen, die deine Relaisvariable beeinflussen können.
	if (Notfall) {
		relaisState = B00000000;					// oder Sonstiges, wie eine Fehlerbehandlung, die die Relais in jedem Fall ausschalten soll
	}
	setRelais ();								// Das ist die Funktion, die bei jedem Durchlauf von Loop die Relais gemäss der Variable relaisState einstellt

}

void setRelais () {								// Die Funktion zum Schalten der Relais
	for (int i = 0; i < anzahl Relais; i++) {				// geht ein Relais nach dem anderen durch,
		if (bitRead(relaisState, i) == 1) {				// prüft, ob das Bit an der Stelle, die zum Relais gehört 1 ist (1. Relais = bit ganz rechts usw.)
			digitalWrite(relaisPin[i], HIGH);			// und schaltet es gegebenenfalls ein
		}
		else {								// steht da ne 0
			digitalWrite(relaisPin[i], LOW);			// wirds abgeschaltet
		}
	}
}

edit: sorry, das mit dem Formatieren des Codes und den Kommentaren hab ich noch nicht so im Griff :wink: