/* Day night IR sensor shield 11/08/12 Trobb DEBUG VERSION!!!! */ #include #define ldr A0 // LDR light sensor #define ir A1 // IR movement sensor pin #define timerPot A2 // Pin the timer potentiometer is connected to #define watchdogPin 3 // Uncomment this line to have a pin blink to let us know the code is running #define led 3 // Output for LED #define gain 10 // the amount of gain to add to the timerPot 10 is a normal value int luxVal = 500; // Value to trigger the low light condition float timerValue; // A variable to hold the value of the delay on time float timerDelay; void setup() { // initialize the IO. // pinMode(watchdogPin, OUTPUT); // Uncomment this line to have a different pin blink to let us know the code is running pinMode(led, OUTPUT); pinMode(ir, INPUT); pinMode(ldr, INPUT); digitalWrite(led, LOW); // start with LED off Serial.begin(9600); wdt_reset(); //make sure we reset watchdog timer to prevent endless resetting // Uncomment this section to have a pin blink to let us know the code is running // blink some morse code OK digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(500); digitalWrite(watchdogPin, LOW); delay(500); digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(500); digitalWrite(watchdogPin, LOW); delay(500); digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(500); digitalWrite(watchdogPin, LOW); delay(1500); digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(500); digitalWrite(watchdogPin, LOW); delay(500); digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(250); digitalWrite(watchdogPin, LOW); delay(500); digitalWrite(watchdogPin, HIGH); // blink watchdog led delay(500); digitalWrite(watchdogPin, LOW); Serial.println("Setup complete"); } void loop() { wdt_reset(); //make sure we reset watchdog timer to prevent endless resetting // Lets print some debugging values to the console Serial.print("Current ldr reading is "); Serial.println(analogRead(ldr)); Serial.print("Current sensor value "); Serial.println(digitalRead(ir)); Serial.print("Current timer value is "); Serial.println(analogRead(timerPot)); wdt_reset(); //make sure we reset watchdog timer to prevent endless resetting // Now check for darkness or daylight and movement // so long as its dark while(analogRead(ldr)<=luxVal){ Serial.println("Its dark"); // and movement is detected if(digitalRead(ir) == 1){ Serial.println("Movement detected"); digitalWrite(led, HIGH); // turn led on Serial.println("LED is ON"); // now leave light on for a predetermined time timerValue = analogRead(timerPot); timerDelay = timerValue * (timerValue / gain); // times the value by itself divided by gain Serial.println(timerDelay); float i = timerDelay; // set timer variable while(i >=0){ i --; Serial.print("Timing out "); Serial.println(i); wdt_reset(); //make sure we reset watchdog timer within the loop to prevent endless resetting } } else{ Serial.println("No movement"); // no movement detected so turn led off digitalWrite(led, LOW); // turn led off wdt_reset(); //make sure we reset watchdog timer to prevent endless resetting } } // not dark enough yet Serial.println("still not dark enough"); digitalWrite(led, LOW); // turn led off wdt_reset(); //make sure we reset watchdog timer to prevent endless resetting }