#include <Servo.h> 
Servo myservo; // create servo object to control a servo 
const int analogInPin = A0; // Analog input pin that the potentiometer is attached to 
const int analogOutPin = 5; // Analog output pin that the LED is attached to 
int sensorValue = 0; // value read from the pot 
int outputValue = 0; // value output to the PWM (analog out) 
int pos = 0; 
void setup() { 
  // initialize serial communications at 9600 bps: 
  Serial.begin(9600); 
  pinMode(analogOutPin, OUTPUT); 
  myservo.attach(9); // attaches the servo on pin 9 to the servo object 
} 
void loop() { 
  // read the analog in value: 
  sensorValue = analogRead(analogInPin); 
  // map it to the range of the analog out: 
  outputValue = map(sensorValue, 0, 1023, 255, 0); 
  // change the analog out value: 
  analogWrite(analogOutPin, outputValue); 
  // print the results to the Serial Monitor: 
  Serial.print("sensor = "); 
  Serial.print(sensorValue); 
  Serial.print("\t output = "); 
  Serial.println(outputValue); 
  // move the servo motor. The speed is inversely proportional to the light coming in 
  if (outputValue < 200){ 
  myservo.write(0); 
  delay(random(outputValue*5,outputValue*20)); 
  myservo.write(180); 
  delay(random(outputValue*5,outputValue*20)); 
  } 
  // wait 2 milliseconds before the next loop for the analog-to-digital 
  // converter to settle after the last reading: 
  delay(2);
}