The following is meant to slow a servo motor 'driven by a photosensor, by introducing delays. Delays work for the 'sweep' program in the Arduino library but in this program the servo gets stuck in one position. Seems like a software/logical mistake? Help please.
#include <Servo.h>
Servo myservo; // create servo object to control a servo
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
int valold = 0; //updates val
void setup()
{
myservo.attach(9); // attaches the servo on pin 9 to the servo object
}
void loop()
{
val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
if (val>valold)
{for (val=valold; val>valold; val=val-1)
myservo.write(val); // sets the servo position according to the scaled value
delay (150);
}
if (val<valold)
{for (val=valold; val<valold; val=val+1)
myservo.write(val); // sets the servo position according to the scaled value
delay (150);
}
delay(150);
(val=valold);
}