Hier der Sketch welcher zwei Servos drehen lässt. Als Sicherheit blinkt die LED wenn ein Serevo in Bewegung ist.
Code: Alles auswählen
#include <Servo.h>
const int LED_GREEN_INTERN = 22;
#define SERVO_PIN1 14
#define SERVO_PIN2 15
Servo Servo1;
Servo Servo2;
unsigned long previousMillis = 0; // Zeitmarker fürs LED-Blinken
const int blinkInterval = 150; // Blinkfrequenz in Millisekunden
bool ledState = false;
void setup() {
pinMode(LED_GREEN_INTERN, OUTPUT);
analogWrite(LED_GREEN_INTERN, 255); // LED aus (active low)
Servo1.attach(SERVO_PIN1, 760, 2550);
Servo2.attach(SERVO_PIN2, 750, 2500);
Servo1.write(90);
Servo2.write(90);
}
void loop() {
// LED-Blinken im Hintergrund
blinkLedNonBlocking();
moveServo(Servo1, 35);
moveServo(Servo2, 55);
}
void moveServo(Servo &servo, int delayTime) {
analogWrite(LED_GREEN_INTERN, 245); // LED an (Servo aktiv)
for (int pos = 0; pos <= 180; pos++) {
servo.write(pos);
blinkLedNonBlocking();
delay(delayTime);
}
for (int pos = 180; pos >= 0; pos--) {
servo.write(pos);
blinkLedNonBlocking();
delay(delayTime);
}
analogWrite(LED_GREEN_INTERN, 255); // LED aus (Servo ruht)
delay(2000);
}
// LED unabhängig vom Servo blinken lassen
void blinkLedNonBlocking() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= blinkInterval) {
previousMillis = currentMillis;
ledState = !ledState; // Zustand wechseln
analogWrite(LED_GREEN_INTERN, ledState ? 245 : 255);
}
}
Hier das Programm im Betrieb:
https://www.youtube.com/watch?v=sG3awMO5WaQ