Hilfe bei der Servo Steuerung

also ich habe mir etz mal ordendliche servos zugelegt, sogar welche die sowol analog als auch digital sind also ist es egal :wink:

ich habe nur noch immer ein probleme mitm einem code. die billigen servos haben mit folgendem code funktioniert:

#if defined(ARDUINO) && ARDUINO >= 100
  #include "Arduino.h"
  #include "SoftwareSerial.h"
  SoftwareSerial port(12,13);
#else // Arduino 0022 - use modified NewSoftSerial
  #include "WProgram.h"
  #include "NewSoftSerial.h"
  NewSoftSerial port(12,13);
#endif

#include <Servo.h>  // Eingefügter Servo
Servo myservo2;
#include <Servo.h>  // Eingefügter Servo
Servo myservo;
#include "EasyVR.h"
EasyVR easyvr(port);

int pos = 0;    // variable to store the servo position 
int pos2 = 60;
//Groups and Commands
enum Groups
{
  GROUP_0  = 0,
  GROUP_1  = 1,
};

enum Group0 
{
  G0_JARVIS = 0,
};

enum Group1 
{
  G1_HELM_AUF = 0,
  G1_HELM_ZU = 1,
};


EasyVRBridge bridge;

int8_t group, idx;

void setup()
{
  // bridge mode?
  if (bridge.check())
  {
    cli();
    bridge.loop(0, 1, 12, 13);
  }
  // run normally
  Serial.begin(9600);
  port.begin(9600);

  if (!easyvr.detect())
  {
    Serial.println("EasyVR not detected!");
    for (;;);
  }

  easyvr.setPinOutput(EasyVR::IO1, LOW);
  Serial.println("EasyVR detected!");
  easyvr.setTimeout(5);
  easyvr.setLanguage(3);

  group = EasyVR::TRIGGER; //<-- start group (customize)
  myservo2.attach(7);
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 
void action();

void loop()
{
  easyvr.setPinOutput(EasyVR::IO1, HIGH); // LED on (listening)

  Serial.print("Say a command in Group ");
  Serial.println(group);
  easyvr.recognizeCommand(group);

  do
  {
    // can do some processing while waiting for a spoken command
  }
  while (!easyvr.hasFinished());
  
  easyvr.setPinOutput(EasyVR::IO1, LOW); // LED off

  idx = easyvr.getWord();
  if (idx >= 0)
  {
    // built-in trigger (ROBOT)
    // group = GROUP_X; <-- jump to another group X
    return;
  }
  idx = easyvr.getCommand();
  if (idx >= 0)
  {
    // print debug message
    uint8_t train = 0;
    char name[32];
    Serial.print("Command: ");
    Serial.print(idx);
    if (easyvr.dumpCommand(group, idx, name, train))
    {
      Serial.print(" = ");
      Serial.println(name);
    }
    else
      Serial.println();
    easyvr.playSound(0, EasyVR::VOL_FULL);
    // perform some action
    action();
  }
  else // errors or timeout
  {
    if (easyvr.isTimeout())
      Serial.println("Timed out, try again...");
    int16_t err = easyvr.getError();
    if (err >= 0)
    {
      Serial.print("Error ");
      Serial.println(err, HEX);
    }
  }
}

void action()
{
    switch (group)
    {
    case GROUP_0:
      switch (idx)
      {
      case G0_JARVIS:
        // write your action code here
        group = GROUP_1;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    case GROUP_1:
      switch (idx)
      {
      case G1_HELM_AUF:
        // write your action code here
        {
          myservo.write(pos+60);  // 1.Servo von 90°-180°
          myservo2.write(pos2-60);  // 2.Servo von 10°-100°
          
        } 
        
        // HELM ZU !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        
        group = GROUP_0;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_HELM_ZU:
        // write your action code here
          myservo.write(pos);  // 1.Servo von 90°-180°
          myservo2.write(pos2);  // 2.Servo von 10°-100°
        
        group = GROUP_0;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      }
      break;
    }
}

die neuen zicken da aber rumm, funktionieren allerdings mit dem alten code:
hier nur der action berreich:

case G1_HELM_AUF:
        // write your action code here
        for(pos = 90; pos < 180; pos += 1) // goes from 0 degrees to 180 degrees
        {                                  // in steps of 1 degree 
          myservo.write(pos);              // tell servo to go to position in variable 'pos' 
          delay(40);  
        }        
        for(pos2 = 10; pos2 < 100; pos2 += 1)
        {
          myservo2.write(pos2);
          delay(40);
        } 
        
        group = GROUP_0;
        // group = GROUP_X; <-- or jump to another group X for composite commands
        break;
      case G1_HELM_ZU:
        // write your action code here
        for(pos = 180; pos>=90; pos-=1)     // goes from 180 degrees to 0 degrees 
        {                                
          myservo.write(pos);              // tell servo to go to position in variable 'pos' 
          delay(40);             // waits 15ms for the servo to reach the position 
        }
        for(pos2 = 100; pos2>=10; pos2-=1) 
        {
          myservo2.write(pos2);
          delay(40);
        }

beid dem letzten code wird ja leider jeder servo einzelt angesteuert und sie bewegen sich nacheinander.
ich brauche es ja aber dass beide gleichzeitig drehen (was mit dem ersten code nicht funktioniert.