Smooth Servo Switch Loop

Hi,
I’m trying to use a switch case but in it I’m using servo’s. I don’t know how to make them move smoothly through each step of the code. This is my code so far:

int Angle = 180;
Servo Servo1;
Servo Servo2;
Servo ROTATE;
void setup() {

  Servo1.attach(22);
  Servo2.attach(24);
  ROTATE.attach(26);
  Servo1.write(180);
  Servo2.write(180);
  ROTATE.write(180);

}

void loop() {

          switch(sensor / 10) {
          case 0:

           if (Angle > 162){
               for (Angle > 162; Angle-=2;){
               Servo1.write(Angle);
               Servo2.write(Angle);
               delay(15); 
            }
           } 
           if (Angle < 162){
              for(Angle < 162; Angle+=2;){
                 Servo2.write(Angle);
                 Servo1.write(Angle);
                 delay(15);
              } 
           }
           
            ROTATE.write(135);  
            Angle = 162;       
            break;
          case 1:
            if (Angle > 144){
               for (Angle > 144; Angle-=2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 144){
               for (Angle < 144; Angle+=2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(126);
            Angle = 144;
            break;
          case 2:
            if (Angle > 126){
               for (Angle > 126; Angle-=2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 126){
               for (Angle < 126; Angle+=2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(117);
            Angle = 126;
            break;
          case 3:              
            if (Angle > 108){
               for (Angle > 108; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 108){
               for (Angle < 144; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(108);   
            Angle = 108;        
            break;
          case 4:
            if (Angle > 90){
               for (Angle > 90; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 90){
               for (Angle < 90; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(99);
            Angle = 90;          
            break;
          case 5:
            if (Angle > 72){
               for (Angle > 72; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 72){
               for (Angle < 72; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(90);  
            Angle = 72;         
            break;
          case 6:              
            if (Angle > 54){
               for (Angle > 54; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 54){
               for (Angle < 54; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(81);             
            Angle = 54;
            break;
          case 7:
            if (Angle > 36){
               for (Angle > 36; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 36){
               for (Angle < 36; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(72);            
            Angle = 36;
            break;    
          case 8:
            if (Angle > 18){
               for (Angle > 18; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 18){
               for (Angle < 18; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(63);  
            Angle = 18;
            break;
          case 9:
            if (Angle > 9){
               for (Angle > 9; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            if (Angle < 9){
               for (Angle < 9; Angle=Angle+2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(54);  
            Angle = 9;
            break;
          case 10:
            if (Angle > 0){
               for (Angle > 0; Angle=Angle-2;){
                   Servo2.write(Angle);
                   Servo1.write(Angle);
                   delay(15);
               } 
            }
            ROTATE.write(45);  
            Angle = 0;
            break;           
          } 
}

How do I make the servo’s move smoothly? Because it can go from case 8 to case 2 straight away with my sensor.

Thanks

It seems you are trying to do a lot here. The code isn't very descriptive. Could you perhaps explain what you are trying to achieve?

Sorry, I'm trying to get data from a LDR and based on it's information I want the servo's to move to certain positions. I'm having no trouble getting the data, or getting the servo's to just move. My only problem is to get them to move to their position smoothly:

servo.write(80);
delay(1000);
servo.write(180);

That is what I was doing, I just made the servo's move to whatever their end position was to be. However I want it to go their in not jerky movements but make it smoother. In the very first post (the code) that was my attempt to make it get to the various positions smoothly. By using a for loop similar to that in the Servo Sweep tutorial. However it's not working.

The LDR isn't always incrementing or decreasing at a steady rate but can jump from case 3 to case 8 straight away, which is why I included the if statements.

The code in planning and implementing a program moves a servo smoothly in response to a potentiometer. It could easily be adapted to your LDR.

...R

Lc324: How do I make the servo's move smoothly?

sketch_feb18a:19: error: 'sensor' was not declared in this scope

What is 'sensor'?

The code you posted does neither compile nor did you tell about what 'sensor' might be in your program.

In general, your overall program design with data structures and algorithms and processing logic seem not to be suitable for what you want to do.

'Multitasking' type of programs must strictly avoid calls of the 'delay()' function. But your program does 'delay()' calls all the time, which is a very strange idea if you want some kind of 'multitasking' instead.

If you have a complete source that compiles, post the full source and describe what is working as expected and what is not working as you like it. I'm not a mind-reader.

               for (Angle < 126; Angle+=2;){

That is NOT how to write a for loop.