Ich habe ein problem mit meinem projekt

ich will mit meinem arduino one board ein gleichstrommotor zwei servo motoren und ein pwr switch eigentlich bin ich ziemlich gut voran gekommen doch ich hänge bei der stelle alle codes zusammen zu bringen alle komponenten bewegen sich bis auf den gleichstrommotor hier ist mein code wäre echt dankbar für hilfe
#include <Servo.h>

// ------ Servos ------
Servo servo1, servo2;
const int servo1Pin = 3;
const int servo2Pin = 13;
int servo1Pos = 180;
bool servo1Active = false;
bool servo1Completed = false;
int servo2Pos = 180;
bool servo2Direction = false;
unsigned long previousMillis1 = 0;
unsigned long previousMillis2 = 0;
const long interval2 = 30; // Intervall für Servo 2 Bewegung
const long delayServo1Start = 5000; // 5 Sekunden Verzögerung für Servo 1
const long durationServo1 = 6000; // 6 Sekunden Servo 1 auf 5° halten

// ------ Motorsteuerung ------
const int GSM1 = 10; // PWM für Geschwindigkeit
const int in1 = 9; // Motor Richtung 1
const int in2 = 8; // Motor Richtung 2
const int PWR_SWITCH = 11; // Optionaler Schalter
bool motorLeftActive = false;
bool motorRightActive = false;
bool pwrSwitchActive = false;
unsigned long motorStartTime = 0;
unsigned long pwrSwitchStartTime = 0;
int repeatCount = 0;
// Motor-Geschwindigkeit (PWM 0-255)
const int motorSpeed = 150;

void setup() {
// Servo-Setup
servo1.attach(servo1Pin);
servo2.attach(servo2Pin);
servo1.write(servo1Pos);
servo2.write(servo2Pos);

// Motorsteuerung-Setup
pinMode(GSM1, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(PWR_SWITCH, OUTPUT);
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(PWR_SWITCH, LOW);

}

void loop() {
unsigned long currentMillis = millis();

// -------------- Servo 1 Steuerung --------------
if (!servo1Active && currentMillis >= delayServo1Start) {
    servo1.write(0);
    servo1Active = true;
    previousMillis1 = currentMillis;
}
if (servo1Active && !servo1Completed && (currentMillis - previousMillis1 >= durationServo1)) {
    servo1.write(170);
    delay(500);
    servo1Completed = true;
}

// -------------- Servo 2 Bewegung --------------
if (!servo1Completed && (currentMillis - previousMillis2 >= interval2)) {
    previousMillis2 = currentMillis;
    if (servo2Direction) {
        servo2Pos += 5;
        if (servo2Pos >= 180) {
            servo2Pos = 180;
            servo2Direction = false;
        }
    } else {
        servo2Pos -= 5;
        if (servo2Pos <= 5) {
            servo2Pos = 5;
            servo2Direction = true;
        }
    }
    servo2.write(servo2Pos);
}

// -------------- Motorsteuerung --------------
if (repeatCount < 0) {
    if (!motorLeftActive && !motorRightActive) {
        motorStartTime = currentMillis;
        motorLeftActive = true;
        // MOTOR NACH LINKS STARTEN
        digitalWrite(in1, HIGH);
        digitalWrite(in2, LOW);
        analogWrite(GSM1, motorSpeed);  // Geschwindigkeit setzen
    }

    // Power-Switch nach 1 Sekunde aktivieren
    if (motorLeftActive && !pwrSwitchActive && currentMillis - motorStartTime >= 1000) {
        pwrSwitchStartTime = currentMillis;
        pwrSwitchActive = true;
        digitalWrite(PWR_SWITCH, HIGH);
    }

    // Power-Switch nach 5 Sekunden wieder ausschalten
    if (pwrSwitchActive && currentMillis - pwrSwitchStartTime >= 5000) {
        pwrSwitchActive = false;
        digitalWrite(PWR_SWITCH, LOW);
    }

    // Motor nach links stoppen und nach rechts starten nach 14 Sekunden
    if (motorLeftActive && currentMillis - motorStartTime >= 14000) {
        motorLeftActive = false;
        // MOTOR STOPPEN
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        analogWrite(GSM1, 0);  // Motor aus
        delay(1000);  // 1 Sekunde warten
        motorStartTime = currentMillis;
        // MOTOR NACH RECHTS STARTEN
        motorRightActive = true;
        digitalWrite(in1, LOW);
        digitalWrite(in2, HIGH);
        analogWrite(GSM1, motorSpeed);
    }

    // Motor nach rechts stoppen nach 26 Sekunden
    if (motorRightActive && currentMillis - motorStartTime >= 26000) {
        motorRightActive = false;
        // MOTOR STOPPEN
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        analogWrite(GSM1, 0);
        repeatCount++;
        delay(1000);
    }
} else {
    // Alle Bewegungen stoppen, wenn Servo 1 fertig ist
    if (servo1Completed) {
        servo1.detach();
        servo2.detach();
        // MOTOR ABSCHALTEN
        digitalWrite(in1, LOW);
        digitalWrite(in2, LOW);
        analogWrite(GSM1, 0);
        while (1);
    }
}

}

➜

Leider verstehe ich den Sinn Deiner Beschreibung nicht. Kommasetzung, Groß- und Kleinschreibung sowie ausformulierte Sätze könnten helfen. Es geht nicht um Perfektion sondern nur um Verständlichkeit :wink:

Ich kann in dem Sketch keine Zuweisung eines negativen Wertes erkennen, so daß diese Bedingung (und damit die Motorsteuerung) erfüllt wäre...

Eventuell den Sketch mit seriellen Ausgaben zum Debuggen spicken, damit man erkennt, in welchem Aktionsblock man sich gerade befindet.

Wie steuerst du den Motor ?
Welchen Motortreiber verwendest du ?
Zudem wäre ein aktuelles Schaltbild deines Projektes sehr hilfreich.

Und setze deinen Sketch zum besseren Lesen in Code-Tags. Wie das geht, kannst du hier nachlesen. Das geht oben auch noch nachträglich.