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);
}
}
}