0
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

void loop() {
  for (pos = 0; 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(15);                       // waits 15ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15ms for the servo to reach the position
  }
}

I have found this code that makes servo go 180 and back, but when I switch 180 degrees with 90, which is what I need, my servo doesn't do that (I tried the code in Arduino simulator).

Do I have to change something elese in the code (like delay time) so it whould go 90 degrees up and then 90 down?

Here is the link of circuit:

https://circuits.io/circuits/3597808-servo-90-degrees

  • 1
    when I swtich 180 degrees with 90 witch is what I need, my servo doesn't do that - So what does it do? ... (I tried the code in Arduino simulator) - What happens with a real Arduino and a real servo? Simulators are merely an approximation. They can never be as good as the real thing. – Majenko Dec 28 '16 at 10:42
  • @Majenko What he does is go 180 degrees up and starts sweeping between 180 and 90 degrees. It is really strage actually, beacuse I didnt inculde 180 degrees in code at all. You think Arduino simulator isn't accurate with servo's? – hehexd Dec 28 '16 at 13:32
  • It sounds like the simulator is rubbish. Get a real servo for your Arduino. They are dirt cheap. – Majenko Dec 28 '16 at 13:33
  • Either that or you are misinterpreting the servo output and what you think is 180° is actually 0°. – Majenko Dec 28 '16 at 13:34
  • @Majenko I will try with real servo but the odd thing is that this first code that I posted is working just for 180 degrees and back, for every other number servo is turning in range between 90 and 180 degrees. BDW simulator is from Autodesk circuits. – hehexd Dec 28 '16 at 14:06
1

No you don't have to change any time delay in order to get it rotating by 90 degrees, delay would just change the speed of rotation of the servo. The simulator you are using is at fault here as the sketch with 180 changed to 90 works flawlessly.

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 

int pos = 0;    // variable to store the servo position 

void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 


void loop() 
{ 
  for(pos = 0; pos < 90; 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(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 90; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
}

MAKE SURE THAT YOU CHANGE BOTH OF THE 180'S TO 90.

  • That is what I did, and still nothing.. – hehexd Dec 28 '16 at 18:40
  • 1
    I JUST RAN THIS CODE ON MY REAL ARDUINO AND IT RUNS PERFECTLY SO THE SIMULATOR IS DEFINITELY AT FAULT! – Manav Dec 28 '16 at 18:48
  • thnx :D an upvote would do :P – Manav Dec 28 '16 at 20:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.