Zum Hauptinhalt springen

🌊 Aufgabe: Sanfte Bewegung ohne delay()

Jetzt bewegst du die Servos gleichmäßig und nicht-blockierend mit millis(). So kann dein Arduino später mehrere Dinge parallel erledigen.


🧠 Ziel

  • Zeitsteuerung mit millis()
  • Sanfte, kontinuierliche Bewegungen

⚙️ Konstanten

#include <Servo.h>

const uint8_t SERVO_LEFT_PIN = 9;
const uint8_t SERVO_RIGHT_PIN = 10;

🧪 Code

#include <Arduino.h>
#include <Servo.h>

const uint8_t SERVO_LEFT_PIN = 9;
const uint8_t SERVO_RIGHT_PIN = 10;

Servo servoLeft, servoRight;

int pos = 90; // Start in Neutral
int direction = 1; // +1 vorwärts, -1 zurück
unsigned long prevMs = 0;
const unsigned long STEP_MS = 20; // kleiner = schneller
const int MIN_ANGLE = 45;
const int MAX_ANGLE = 135;

void setup() {
servoLeft.attach(SERVO_LEFT_PIN);
servoRight.attach(SERVO_RIGHT_PIN);
servoLeft.write(pos);
servoRight.write(180 - pos); // gegensinnig
}

void loop() {
unsigned long now = millis();
if (now - prevMs >= STEP_MS) {
prevMs = now;

pos += direction;
if (pos <= MIN_ANGLE || pos >= MAX_ANGLE) {
direction = -direction; // Richtung umkehren
}

servoLeft.write(pos);
servoRight.write(180 - pos); // gegensinnig
}

// Platz für weitere Logik (LEDs, Sensoren, …)
}

✅ Checkliste

  • Bewegung ist gleichmäßig (keine großen Sprünge)
  • Kein delay() blockiert die Schleife
  • Grenzen (45°–135°) werden eingehalten