Piège photo rudimentaire

Bonjour,

Assez novice en la matière je me suis fait un petit piège photo avec une barrière laser.( arduino UNO)
Boitier laser autonome.
Détection laser en entrée A4
Appareil photo commandé par transistor en sortie D13
Flash commandé par transistor en sortie D12

Le système fonctionne correctement quand le faisceau est coupé à ceci près que si l'animal reste devant le faisceau et bien les sorties restent activées en permanence aussi longtemps que le faisceau est coupé.

J'aimerais que les sorties repassent au niveau bas immédiatement après leurs activation.

Après maintes recherches je n'ai pas trouvé satisfaction.

Avez-vous une idée ?

Merci

/*
Dispositf à déclencher en PIN D13 App Photo et PIN D12 FLASH
Le boitier du capteur Capteur laser est relié en en PIN A4 (entrée analogique) via le câble
 
 */

const int analogInPin  = A4; // pin capteur 4
 int photo = 13;    // pin sortie app photo 13
 int flash = 12;    // pin sortie flash
 
 
 int sensorValue = 0; // valeur renvoyé par capteur
 int outputValue = 0; // valeur sortie
 int seuil = 900; // valeur seuil sensibilité capteur
 
 
 void setup() {

   Serial.begin(9600); // moniteur série à 9600bds     
   
   pinMode(photo, OUTPUT); // defini la sortie app photo pin 13
   pinMode(flash, OUTPUT); // defini la sortie flash pin 12
   
   pinMode(A4, INPUT); // defini l'entrée capteur
 }
 
 void loop() {
   
   
   
   sensorValue = analogRead (analogInPin); // lire la valeur analogique en entrée
   
   outputValue = digitalRead (photo);
    delay(20); // délais 20msec
         
    // afficher résultat sur moniteur série
      
      Serial.print("capteur= ");
      Serial.print(sensorValue);
      Serial.print("  PHOTO=");
      if (analogRead(A4) < 900) {
       Serial.println(" CLIC");
       }
       else {
       Serial.println(" OFF");
       }      
        
      
    // si valeur d'entrée passe à 0 (faisceau coupé) alors allumer la sortie (PHOTO)

    if (analogRead(4) < 900) {  
        digitalWrite (13, HIGH); // photo ON (ou lampe,etc....)
        delay(100); // delay temps de latence appareil photo
        digitalWrite (12, HIGH); // flash on        
          }         
     else {
        digitalWrite(13, LOW); // Photo off (ou lampe,etc...) 
        digitalWrite(12, LOW); // flash off  
                  
          }
         
}

Bonjour,

Il suffit de gérer un flag pour signaler si le systeme est armé ou non
Tu désarmes le système après un déclenchement et tu le réarmes lorsqu'il n'y a plus rien dans le faisceau.

/*
  Dispositf à déclencher en PIN D13 App Photo et PIN D12 FLASH
  Le boitier du capteur Capteur laser est relié en en PIN A4 (entrée analogique) via le câble

*/

const int analogInPin  = A4; // pin capteur 4
int photo = 13;    // pin sortie app photo 13
int flash = 12;    // pin sortie flash


int sensorValue = 0; // valeur renvoyé par capteur
int outputValue = 0; // valeur sortie
int seuil = 900; // valeur seuil sensibilité capteur


void setup() {

  Serial.begin(9600); // moniteur série à 9600bds

  pinMode(photo, OUTPUT); // defini la sortie app photo pin 13
  pinMode(flash, OUTPUT); // defini la sortie flash pin 12

  pinMode(A4, INPUT); // defini l'entrée capteur
}

void loop() {
  static bool arme=true;    // indique que le système est armé
  
  sensorValue = analogRead (analogInPin); // lire la valeur analogique en entrée

  outputValue = digitalRead (photo);
  delay(20); // délais 20msec

  // afficher résultat sur moniteur série

  Serial.print("capteur= ");
  Serial.print(sensorValue);
  Serial.print("  PHOTO=");

  // si valeur d'entrée passe à 0 (faisceau coupé) alors allumer la sortie (PHOTO)

  if (analogRead(4) < 900) {
    if (arme)
    {
      Serial.println(" CLIC");
      digitalWrite (13, HIGH); // photo ON (ou lampe,etc....)
      delay(100); // delay temps de latence appareil photo
      digitalWrite (12, HIGH); // flash on
      delay(500);   // on attend un certain temps avant de mettre les sorties à 0
      digitalWrite(13, LOW); // Photo off (ou lampe,etc...)
      digitalWrite(12, LOW); // flash off
      arme=false;
    }
  }
  else {
    arme=true;
    Serial.println(" REARME");
  }
}

bonjour,
faisant aussi de la photo animalière et ayant un piège photo, il y a plusieurs choses a prendre en compte.
parfois des brindilles ou feuilles peuvent couper le faisceau ou passer dans le détecter de mouvement.
si tu prends des sangliers, chevreuils, cerfs, etc... en harde, tu peux avoir plusieurs animaux cote à cote et n'être pris en compte que pour un seul animal par le faisceau.

le succès de bonnes photos avec un piège photo est la multiplication des photos pour prendre le bon mouvement.

A ta place, j'utiliserais la fonction millis() et réarmer au bout d'une seconde.
Mais avec un flash, l'animal ne doit pas rester des heures devant le faisceau :wink:

donc, tout dépend ce que tu prends en photo à mon avis, l'emplacement (agrainage, perchoir, etc....)

Bonjour,

Réponse claire et rapide, c'est exactement ce que je cherchais.
Ca fonctionne comme je le souhaite.

Encore merci