Étape 9: Logiciel complet pour le capteur PIR
Après s’être assuré que toutes les choses fonctionnent, on peut programmer le logiciel complet. J’ai utilisé un module de sommeil agréable afin d’économiser la batterie, voici la bibliothèque Sleep_n0m1.
Le logiciel est assez simple :
-lors de l’initialisation, le bi-color LED clignote 10 fois
-après ce moment, le capteur PIR est pleinement opérationnel
-Lorsque le détecteur détecte un changement, il se réveillera l’Arduino Arduino donnera le signal de mise au point de la caméra (1 seconde), puis il va attendre 0,5 secondes et ensuite donner le signal de l’obturateur (0,5 seconde)
-appareil photo prend une photo.
******************************************************************************************
#include Sleep_n0m1.h
Millisecondes de l’activation du signal
const int FOCUS_TIME = 1000 ;
const int SHUTTER_TIME = 500 ;
Numérique des pins
const int FOCUS_LED = 7 ;
const int SHUTTER_LED = 6 ;
Numérique à pins
const int PIR_IN = 8 ;
Numérique des pins (à transistors MOS-FET)
const int FOCUS_ON = 4 ;
const int SHUTTER_ON = 9 ;
Sommeil sommeil ;
Une fois mises en place
void setup() {}
pinMode (FOCUS_LED, sortie) ;
pinMode (SHUTTER_LED, sortie) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
pinMode (FOCUS_ON, sortie) ;
pinMode (SHUTTER_ON, sortie) ;
digitalWrite (FOCUS_ON, basse) ;
digitalWrite (SHUTTER_ON, basse) ;
pinMode (entrée, PIR_IN) ;
Delay(2000) ;
allumage des LED rouge, vert et ambre
pour 10 fois - 1er fois
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
2ème fois
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************3
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************4
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************5
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************6
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************7
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************8
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
//****************9
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
10ème temps et plus
digitalWrite (FOCUS_LED, basse) ;
Delay(500) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(500) ;
digitalWrite (SHUTTER_LED, élevé) ;
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
}
void loop() {}
sleep.pwrDownMode() ; mode SET "veille"
sleep.sleepInterrupt(0,RISING) ; (interrompre numéro 0 (ou broche 2), interrompre l’État sur la hausse)
doFocus() ;
doShot() ;
Delay(1000) ;
}
Envoyer le signal de mise au point
void doFocus() {}
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (FOCUS_ON, élevé) ;
retard (FOCUS_TIME) ;
digitalWrite (FOCUS_ON, basse) ;
digitalWrite (FOCUS_LED, élevé) ;
Delay(200) ;
}
Envoi de signal de l’obturateur
void doShot() {}
digitalWrite (SHUTTER_LED, basse) ;
digitalWrite (SHUTTER_ON, élevé) ;
retard (SHUTTER_TIME) ;
digitalWrite (SHUTTER_ON, basse) ;
digitalWrite (SHUTTER_LED, élevé) ;
Delay(100) ;
couleur ambre
digitalWrite (FOCUS_LED, basse) ;
digitalWrite (SHUTTER_LED, basse) ;
Delay(1000) ;
digitalWrite (FOCUS_LED, élevé) ;
digitalWrite (SHUTTER_LED, élevé) ;
}