#include Servo myServo; // Erstelle ein Servo-Objekt int potPin = A0; // Pin, an dem das Potentiometer angeschlossen ist int servoPin = 9; // PWM-Pin, an dem das Servo angeschlossen ist int inputPin = 7; // Pin, an dem das Eingangssignal angeschlossen ist int outputPin = 8; // Pin, an dem der Zustand des Servos angezeigt wird int potValue; // Variable zum Speichern des Potentiometerwertes int targetAngle; // Variable zum Speichern des Zielwinkels int currentAngle = 0; // Variable zum Speichern des aktuellen Winkels const int totalTravelTime = 2000; // Gesamtzeit für die Bewegung in Millisekunden const int steps = 100; // Anzahl der Schritte für die Bewegung (1 Schritt pro Grad) const int delayPerStep = totalTravelTime / steps; // Berechne die Verzögerung pro Schritt void setup() { myServo.attach(servoPin); // Verbinde das Servo mit dem definierten Pin pinMode(inputPin, INPUT); // Setze den Eingangspin als Eingang pinMode(outputPin, OUTPUT); // Setze den Ausgangspin als Ausgang myServo.write(0); // Setze das Servo auf den Startwinkel (0 Grad) currentAngle = 0; // Initialisiere den aktuellen Winkel auf 0 Grad digitalWrite(outputPin, LOW); // Setze den Ausgangspin auf LOW delay(1000); // Warte eine Sekunde, damit sich das Servo auf 0 Grad bewegen kann } void loop() { potValue = analogRead(potPin); // Lese den Wert vom Potentiometer targetAngle = map(potValue, 0, 1023, 75, 90); // Map den Potentiometerwert auf einen Winkel zwischen 75 und 90 Grad if (digitalRead(inputPin) == HIGH) { // Öffne das Servo bis zum Zielwinkel if (currentAngle < targetAngle) { currentAngle++; myServo.write(currentAngle); delay(delayPerStep); // Verlangsame die Bewegung } if (currentAngle == targetAngle) { digitalWrite(outputPin, HIGH); // Setze den Ausgangspin auf HIGH } } else { // Schließe das Servo bis 0 Grad if (currentAngle > 0) { currentAngle--; myServo.write(currentAngle); delay(delayPerStep); // Verlangsame die Bewegung } if (currentAngle == 0) { digitalWrite(outputPin, LOW); // Setze den Ausgangspin auf LOW } } }