Déclenchement prise de photo

Bonjour,

J'utilise actuellement une Caméra série JPEG TTL avec vidéo NTSC (TTL Serial JPEG Camera with NTSC Video : ID 397 : $39.95 : Adafruit Industries, Unique & fun DIY electronics and kits) branché au port ditigal à un arduino et un shield pour carte SD. La prise de photo se déclenche lorsque je lance le programme ou lorsqu'un mouvement est détecté. Savez-vous comment il est possible de déclencher la prise d'image par rapport à un autre capteur ? Avez-vous des exemples de codes?

Merci d'avance.

Bonjour nyr

Mets ce programme en ligne, ça donnerai une idée du fonctionnement de l'ensemble.

Cordialement
jpbbricole

Bonjour @nyr

J'ai déplacé le fil dans la partie principale du Forum Francophone comme il se doit
(cf Bonnes pratiques Forum Francophone à consulter pour découvrir où poser les questions, quelle informations fournir, comment poster du code.....)

Quand tu auras mis au point ton projet tu pourras poster un tutoriel dans la zone réservée :wink:

1 Like

Prise d'image au lancement du programme


`  // Try to locate the camera
  if (cam.begin()) {
    Serial.println("Camera Found:");
  } else {
    Serial.println("No camera found?");
    return;
  }
  // Print out the camera version information (optional)
  char *reply = cam.getVersion();
  if (reply == 0) {
    Serial.print("Failed to get version");
  } else {
    Serial.println("-----------------");
    Serial.print(reply);
    Serial.println("-----------------");
  }

  // Set the picture size - you can choose one of 640x480, 320x240 or 160x120 
  // Remember that bigger pictures take longer to transmit!
  
  cam.setImageSize(VC0706_640x480);        // biggest
  //cam.setImageSize(VC0706_320x240);        // medium
  //cam.setImageSize(VC0706_160x120);          // small

  // You can read the size back from the camera (optional, but maybe useful?)
  uint8_t imgsize = cam.getImageSize();
  Serial.print("Image size: ");
  if (imgsize == VC0706_640x480) Serial.println("640x480");
  if (imgsize == VC0706_320x240) Serial.println("320x240");
  if (imgsize == VC0706_160x120) Serial.println("160x120");

  Serial.println("Snap in 3 secs...");
  delay(3000);

  if (! cam.takePicture()) 
    Serial.println("Failed to snap!");
  else 
    Serial.println("Picture taken!");
  
  // Create an image with the name IMAGExx.JPG
  char filename[13];
  strcpy(filename, "IMAGE00.JPG");
  for (int i = 0; i < 100; i++) {
    filename[5] = '0' + i/10;
    filename[6] = '0' + i%10;
    // create if does not exist, do not open existing, write, sync after write
    if (! SD.exists(filename)) {
      break;
    }
  }
  
  // Open the file for writing
  File imgFile = SD.open(filename, FILE_WRITE);

  // Get the size of the image (frame) taken  
  uint16_t jpglen = cam.frameLength();
  Serial.print("Storing ");
  Serial.print(jpglen, DEC);
  Serial.print(" byte image.");

  int32_t time = millis();
  pinMode(8, OUTPUT);
  // Read all the data up to # bytes!
  byte wCount = 0; // For counting # of writes
  while (jpglen > 0) {
    // read 32 bytes at a time;
    uint8_t *buffer;
    uint8_t bytesToRead = min((uint16_t)32, jpglen); // change 32 to 64 for a speedup but may not work with all setups!
    buffer = cam.readPicture(bytesToRead);
    imgFile.write(buffer, bytesToRead);
    if(++wCount >= 64) { // Every 2K, give a little feedback so it doesn't appear locked up
      Serial.print('.');
      wCount = 0;
    }
    //Serial.print("Read ");  Serial.print(bytesToRead, DEC); Serial.println(" bytes");
    jpglen -= bytesToRead;
  }
  imgFile.close();

  time = millis() - time;
  Serial.println("done!");
  Serial.print(time); Serial.println(" ms elapsed");
}

void loop() {
}`

Il est possible de déclencher à volonté une prise de vue en appelant :

cam.takePicture()

Oui, mais je fais comment pour l'appeler lorsque qu'une valeur est dépassé sur un fichier csv (enregistré par un autre capteur) par exemple? Comment faire pour lire le programme du fichier csv?

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.