int IR_sensor = 11; // input from IR sensor
int shutter = 3; // led pin
int filming_led = 9;
long shutterOnInterval = 1000;
long filmPeriod = 5000;
int timerRunning = 0;
int filming = 0;
unsigned long startTime = 0;
unsigned long timeNow = 0;
//--------------------------------------------------------------------
void setup() {
pinMode(IR_sensor, INPUT);
pinMode(shutter, OUTPUT);
pinMode (filming_led, OUTPUT);
Serial.begin(9600);
Serial.println("IR_sensor_V3.ino");
}
//--------------------------------------------------------------------
void loop() {
//read the IR sensor. If HIGH, start the on/off signal
if ((digitalRead(IR_sensor) == HIGH) && (timerRunning == 0)) {
Serial.println("start filming ");
startTime = millis();
digitalWrite(shutter, HIGH);
digitalWrite(filming_led, HIGH);
timerRunning = 1;
filming = 1;
// Serial.println("1 signal and filming started");
}
//stop the on/off signal after the lamponinterval. filming still running
//timeNow = millis();
if ((timerRunning == 1) && (millis() - startTime) >= shutterOnInterval ) {
Serial.println("end pulse 1 ");
digitalWrite(shutter, LOW);
timerRunning = 2;
// Serial.println("2 signal stopped BUT Still filming");
}
//if filming period is done, stop filming and send on/off signal
// timeNow = millis();
if (((millis() - startTime) > filmPeriod) && (filming == 1)) {
Serial.println("stop filming ");
digitalWrite(shutter, HIGH);
digitalWrite(filming_led, LOW);
filming = 0;
timerRunning = 3;
startTime = millis();
//Serial.println("3 filming ended and signal to stop is started");
}
//stop the on/off signal after the lamponinterval and after the filmPeriod
//timeNow = millis();
if ((timerRunning == 3) && (millis() - startTime) >= shutterOnInterval ) {
Serial.println("end pulse 2 ");
digitalWrite(shutter, LOW);
timerRunning = 0;
//Serial.println("4 filming stopped and signal SENT");
}
if ((digitalRead(IR_sensor) == HIGH) && (timerRunning == 2) && (filming == 1)) { //Extende time
startTime = startTime + filmPeriod;
Serial.println("extended");
}
}