help please - software error??

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);

}

#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--) {//added brace
                  myservo.write(val);  // sets the servo position according to the scaled value 
                  delay (150);
            }//added brace
      }

      if (val<valold) {
            for (val=valold; val<valold; val++) {//added brace
                  myservo.write(val);  // sets the servo position according to the scaled value
                  delay (150);
            }//added brace
      }

      delay(150);

      (val=valold); 
}

Added some {} after the for () statements.
Completely untested.
:slight_smile:

[edit]In the future: please use the [#] button when posting code.[/edit]