Simple Servo sweep with pause.

Hi Guys, Totally new to all this, I had a go a few years back with some success, since then I have been married and now a father so have completely forgot all i learned.

Anyway , hopefully this will be simple and easy,

I have made a camera mount and use a Servo to pan the camera to use as a cctv to watch the babies room,

I can use the servo sweep code in the arduino library ,

My question is, Is there a way to add a pause to the servo, so it stops at 180' then sweeps back to 0' and pauses there, for a range of time, anything from 5 seconds up to minutes ?

Here is the code in the library, can anyone help, Thanks guys.

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#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
  }
}

Hi,

/* Sweep
 by BARRAGAN <http://barraganstudio.com>
 This example code is in the public domain.

 modified 8 Nov 2013
 by Scott Fitzgerald
 http://www.arduino.cc/en/Tutorial/Sweep
*/

#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
  }

  delay(5000); //5000 = 5 seconds, 60000 = 60 seconds = 1 minute

  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
  }

  delay(5000); //5000 = 5 seconds, 60000 = 60 seconds = 1 minute

}

Jacques

You have a pause of 15 milliseconds between each write to the servo.

Can you write a longer pause at the end of each sweep?

The first for loop sweeps from 0° to 180°
The second sweeps back from 180° back to 0°
There is a function in the code that creates a small delay, (with a parameter in milliseconds) as it sweeps around
Then the loop() loops and you start over

So where do you think you could put a delay() call to pause based on your needs?

EDIT: bummer Jacques let the cat out of the bag before I clicked post :slight_smile:

Yeah :slight_smile: Thank you Jacques.