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