Beschäftige mich leider erst seit wenigen Tagen mit Arduino und habe deshalb dementsprechend wenig Ahnung 
Leider funktioniert es weiterhin nicht dass sich die Motoren gleichzeitig drehen. Ich vermute es liegt an dem delay(Speed) in den Drehbefehlen. Kann ich diese einfach durch millis() ersetzen? löst das mein Problem?
Danke im Voraus.
//Motoren Drehrichtungen benennen
byte Motor1Stop = 0;
byte Motor1Rechts = 1;
byte Motor1Links = 2;
byte Motor2Stop = 0;
byte Motor2Rechts = 1;
byte Motor2Links = 2;
byte Motor3Stop = 0;
byte Motor3Rechts = 1;
byte Motor3Links = 2;
const int motorPause = 1000;
unsigned long motorIntervall;
unsigned long motorMillis;
byte zustand = 0;
//Phasenansteuerung festlegen
byte StepValues [][4] = {
{0,0,0,1},
{0,0,1,1},
{0,0,1,0},
{0,1,1,0},
{0,1,0,0},
{1,1,0,0},
{1,0,0,0},
{1,0,0,1},
};
//MotorAusgaenge festlegen
byte Motor1_Ausgaenge[] = {53,51,49,47}; //IN1 = 47, IN2 = 49, IN3 = 51, IN4 = 53
byte Motor2_Ausgaenge[] = {45,43,41,39}; //IN1 = 39, IN2 = 41, ...
byte Motor3_Ausgaenge[] = {37,35,33,31}; //IN1 = 31, IN2 = 33, ...
//Ausgaenge als Ausgaenge deklarieren und auf "0" setzen
void setup() {
for (byte i=0; i<=3; i++){
pinMode((Motor1_Ausgaenge[i]), OUTPUT);
pinMode((Motor2_Ausgaenge[i]), OUTPUT);
pinMode((Motor3_Ausgaenge[i]), OUTPUT);
digitalWrite(Motor1_Ausgaenge[i], LOW);
digitalWrite(Motor2_Ausgaenge[i], LOW);
digitalWrite(Motor3_Ausgaenge[i], LOW);
}
}
void loop() {
if(millis() - motorMillis >= motorIntervall){
switch(zustand){
case 0:
Motor1Move(Motor1Rechts, 2, 500);
Motor2Move(Motor2Rechts, 2, 500);
zustand = 1;
motorMillis = millis();
motorIntervall = motorPause;
break;
case 1:
Motor1Move(Motor1Links, 2, 500);
Motor2Move(Motor2Links, 2, 500);
zustand = 0;
motorMillis = millis();
motorIntervall = motorPause;
break;
}
}
}
///////////////////////////MOTOR 1///////////////////////////
void Motor1Move(byte Direction1, int Speed1, int Steps1){
//Motor1 Stop
if(Direction1 == 0){
for (byte i=0; i<=3; i++){
digitalWrite(Motor1_Ausgaenge[i], LOW);
}
}
//Motor1 Rechtsdrehung
if(Direction1 == 1){
for(int i=0; i<= Steps1; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor1_Ausgaenge[k], StepValues[j][k]);
}
delay(Speed1);
}
}
Motor1Move(Motor1Stop, 0,0);
}
//Motor1 Linksdrehung
if(Direction1 == 2){
for(int i=0; i<= Steps1; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor1_Ausgaenge[k], StepValues[j][3-k]);
}
delay(Speed1);
}
}
Motor1Move(Motor1Stop, 0, 0);
}
}
///////////////////////////MOTOR 2///////////////////////////
void Motor2Move(byte Direction2, int Speed2, int Steps2){
//Motor2 Stop
if(Direction2 == 0){
for (byte i=0; i<=3; i++){
digitalWrite(Motor2_Ausgaenge[i], LOW);
}
}
//Motor2 Rechtsdrehung
if(Direction2 == 1){
for(int i=0; i<= Steps2; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor2_Ausgaenge[k], StepValues[j][k]);
}
delay(Speed2);
}
}
Motor2Move(Motor2Stop, 0,0);
}
//Motor2 Linksdrehung
if(Direction2 == 2){
for(int i=0; i<= Steps2; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor2_Ausgaenge[k], StepValues[j][3-k]);
}
delay(Speed2);
}
}
Motor2Move(Motor2Stop, 0, 0);
}
}
///////////////////////////MOTOR 3///////////////////////////
void Motor3Move(byte Direction3, int Speed3, int Steps3){
//Motor3 Stop
if(Direction3 == 0){
for (byte i=0; i<=3; i++){
digitalWrite(Motor3_Ausgaenge[i], LOW);
}
}
//Motor3 Rechtsdrehung
if(Direction3 == 1){
for(int i=0; i<= Steps3; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor3_Ausgaenge[k], StepValues[j][k]);
}
delay(Speed3);
}
}
Motor3Move(Motor3Stop, 0,0);
}
//Motor3 Linksdrehung
if(Direction3 == 2){
for(int i=0; i<= Steps3; i++){
for(int j=0; j<=7; j++){
for(int k=0; k<=3; k++){
digitalWrite(Motor3_Ausgaenge[k], StepValues[j][3-k]);
}
delay(Speed3);
}
}
Motor3Move(Motor3Stop, 0, 0);
}
}