PIR-sensor för DSLR fotokamera (9 / 10 steg)
Steg 9: Komplett programvara för PIR-sensorn
Efter att se till att alla saker fungerar, kan vi programmera de kompletta programvara. Jag använde en trevlig sömn modul för att spara på batteriet, här är biblioteket Sleep_n0m1.
Programmet är ganska rakt framåt:
-vid initiering, bi-color lampan blinkar 10 gånger
-efter detta ögonblick, PIR-sensorn är fullt fungerande
-När PIR-sensor upptäcka en förändring, det kommer att vakna upp Arduino och Arduino ger fokus signalen till kameran (1 sekund), då det kommer att vänta med 0,5 sekunder och sedan ge slutaren signalen (0,5 sekunder)
-kamera kommer att ta ett foto.
******************************************************************************************
#include Sleep_n0m1.h
Millisekunder av signal aktiveringen
CONST int FOCUS_TIME = 1000;
CONST int SHUTTER_TIME = 500.
Digital ut pins
CONST int FOCUS_LED = 7.
CONST int SHUTTER_LED = 6;
Digital i pins
CONST int PIR_IN = 8;
Digital ut pins (till MOS-FET transistorer)
CONST int FOCUS_ON = 4;
CONST int SHUTTER_ON = 9;
Sömn sömn;
En gång ställa in
void setup() {
pinMode (FOCUS_LED, OUTPUT);
pinMode (SHUTTER_LED, OUTPUT);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
pinMode (FOCUS_ON, OUTPUT);
pinMode (SHUTTER_ON, OUTPUT);
digitalWrite (FOCUS_ON, låg);
digitalWrite (SHUTTER_ON, låg);
pinMode (PIR_IN, indata);
Delay(2000);
Turn-on röda, gröna och gula LED
för 10 gånger - 1: a gången
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
2: a gången
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************3
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************4
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************5
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************6
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************7
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************8
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
//****************9
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
10. tid och över
digitalWrite (FOCUS_LED, låg);
Delay(500);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, låg);
Delay(500);
digitalWrite (SHUTTER_LED, hög);
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
}
void loop() {
sleep.pwrDownMode(); Ställ in viloläge
sleep.sleepInterrupt(0,RISING); (Avbryt nummer 0 (eller stift 2), avbryta staten på stigande)
doFocus();
doShot();
Delay(1000);
}
Sänder signal om fokus
void doFocus() {
digitalWrite (FOCUS_LED, låg);
digitalWrite (FOCUS_ON, hög);
fördröjning (FOCUS_TIME);
digitalWrite (FOCUS_ON, låg);
digitalWrite (FOCUS_LED, hög);
Delay(200);
}
Skicka slutaren signal
void doShot() {
digitalWrite (SHUTTER_LED, låg);
digitalWrite (SHUTTER_ON, hög);
fördröjning (SHUTTER_TIME);
digitalWrite (SHUTTER_ON, låg);
digitalWrite (SHUTTER_LED, hög);
Delay(100);
bärnstensfärgad
digitalWrite (FOCUS_LED, låg);
digitalWrite (SHUTTER_LED, låg);
Delay(1000);
digitalWrite (FOCUS_LED, hög);
digitalWrite (SHUTTER_LED, hög);
}