//Sun light shutter [ iShutter ] 2014/Feb/27 SonotaCo
#include <Servo.h>
#define levH    400 // night->day threshold ( 0(dark) < lev < 1023(bright))
#define levL    250 // day->night threshold ( must be << levH )
#define secH    60  // night->day watching seconds ( > max meteor duration )
#define secL    10  // day->night watching seconds ( > max happening duration )
#define openDeg 90  // shutter open angle
#define servoN  9   // servo pin number
#define cdsN    0   // CDS sensor pin number
#define ledN    13  // on board LED pin number

Servo servoX;   // servo motor
int   isClose;  // 1 : shutter is close, 0: shutter is open
int   duration; // watching seconds

void DoOpen() {
        servoX.write( openDeg );
        delay(1000);
	isClose = 0;
	duration = 0;
        digitalWrite(ledN, HIGH);
}
void DoClose(){
        servoX.write( 0 );
        delay(1000);
	isClose = 1;
	duration = 0;
        digitalWrite(ledN, LOW);
}
void setup() {
	pinMode(ledN,OUTPUT);
	servoX.attach(servoN); 
        DoClose();
}
void loop() {
	if(isClose)  {
		if( analogRead(cdsN)  < levL) { // it becomes dark
			duration ++;
			if(duration > secL) 
                                DoOpen();
		}
		else 	duration = 0;
        }
	else  {
		if( analogRead(cdsN)  > levH) { // it becomes bright
			duration ++;
			if(duration > secH) 
                              DoClose();
		}
		else 
                        duration = 0;
	}
        delay(1000);
}
