// Pin-Definitionen const int POTI_PIN = A0; // Potentiometer am analogen Pin A0 const int RELAIS_1 = 2; // Relais 1 an Digitalpin D2 const int RELAIS_2 = 3; // Relais 2 an Digitalpin D3 const int RELAIS_3 = 4; // Relais 3 an Digitalpin D4 // Hysterese-Einstellung const int HYSTERESE = 20; // Pufferbereich gegen Signalrauschen void setup() { pinMode(RELAIS_1, OUTPUT); pinMode(RELAIS_2, OUTPUT); pinMode(RELAIS_3, OUTPUT); // Alle Relais zu Beginn aus digitalWrite(RELAIS_1, LOW); digitalWrite(RELAIS_2, LOW); digitalWrite(RELAIS_3, LOW); } // void loop() { // 1. Potentiometer einlesen int potiWert = analogRead(POTI_PIN); // 2. Stufe über die Hysterese-Funktion ermitteln int stufe = bestimmeStufeMitHysterese(potiWert); // 3. Relais passend zur Stufe schalten via switch-case-break switch (stufe) { case 0: // Alle aus digitalWrite(RELAIS_1, LOW); digitalWrite(RELAIS_2, LOW); digitalWrite(RELAIS_3, LOW); break; case 1: // Nur Relais 1 an digitalWrite(RELAIS_1, HIGH); digitalWrite(RELAIS_2, LOW); digitalWrite(RELAIS_3, LOW); break; case 2: // Relais 2 an digitalWrite(RELAIS_1, LOW); digitalWrite(RELAIS_2, HIGH); digitalWrite(RELAIS_3, LOW); break; case 3: // Relais 3 an digitalWrite(RELAIS_1, LOW); digitalWrite(RELAIS_2, LOW); digitalWrite(RELAIS_3, HIGH); break; } delay(100); // Kurze Pause zur Stabilisierung } // Eigene Funktion zur Stufenberechnung mit Puffer (Hysterese) int bestimmeStufeMitHysterese(int messwert) { static int gespeicherteStufe = 0; // static behält den Wert beim nächsten Aufruf // Schwellenwerte: 256, 512, 768 if (messwert < (256 - HYSTERESE)) { gespeicherteStufe = 0; } else if (messwert > (256 + HYSTERESE) && messwert < (512 - HYSTERESE)) { gespeicherteStufe = 1; } else if (messwert > (512 + HYSTERESE) && messwert < (768 - HYSTERESE)) { gespeicherteStufe = 2; } else if (messwert > (768 + HYSTERESE)) { gespeicherteStufe = 3; } return gespeicherteStufe; // Gibt die aktuelle oder gehaltene Stufe zurück }