Arducam button ile görüntü yakalama

Arducam shield ile butona basıldığında görüntü yakalayıp sd carda kaydetmek istiyorum fakat bir türlü istediğimi yapamadım kullandığım kod bu // ArduCAM demo (C)2014 Lee // web: http://www.ArduCAM.com // This program is a demo of how to use most of the functions // of the library with a supported camera modules, and can run on any Arduino platform. // // This demo was made for Omnivision OV2640 2MP sensor. // It will run the ArduCAM as a real 2MP digital camera, provide both preview and JPEG capture. // The demo sketch will do the following tasks: // 1. Set the sensor to BMP preview output mode. // 2. Switch to JPEG mode when shutter buttom pressed. // 3. Capture and buffer the image to FIFO. // 4. Store the image to Micro SD/TF card with JPEG format. // 5. Resolution can be changed by myCAM.set_JPEG_size() function. // This program requires the ArduCAM V3.1.0 (or later) library and Rev.C ArduCAM shield // and use Arduino IDE 1.5.2 compiler or above #include <utft_spi.h>
#include <sd.h>
#include <wire.h>
#include <arducam.h>
#include <spi.h>
#include “memorysaver.h”

#if defined( arm )
#include <itoa.h>
#endif

#define SD_CS 9
// set pin 10 as the slave select for SPI:
const int SPI_CS = 10;

ArduCAM myCAM(OV2640,SPI_CS);
UTFT myGLCD(SPI_CS);
boolean isShowFlag = true;

void setup()
{
uint8_t vid,pid;
uint8_t temp;
#if defined ( AVR )
Wire.begin();
#endif
#if defined( arm )
Wire1.begin();
#endif
Serial.begin(115200);
Serial.println(“ArduCAM Start!”);
// set the SPI_CS as an output:
pinMode(SPI_CS, OUTPUT);

// initialize SPI:
SPI.begin();
//Check if the ArduCAM SPI bus is OK
myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
temp = myCAM.read_reg(ARDUCHIP_TEST1);
if(temp != 0x55)
{
Serial.println(“SPI interface Error!”);
while(1);
}

//Change MCU mode
myCAM.write_reg(ARDUCHIP_MODE, 0x00);

myGLCD.InitLCD();

//Check if the camera module type is OV2640
myCAM.rdSensorReg8_8(OV2640_CHIPID_HIGH, &vid);
myCAM.rdSensorReg8_8(OV2640_CHIPID_LOW, &pid);
if((vid != 0x26) || (pid != 0x42))
Serial.println(“Can’t find OV2640 module!”);
else
Serial.println(“OV2640 detected”);

//Change to BMP capture mode and initialize the OV2640 module
myCAM.set_format(BMP);

myCAM.InitCAM();

//Initialize SD Card
if (!SD.begin(SD_CS))
{
//while (1); //If failed, stop here
Serial.println(“SD Card Error”);
}
else
Serial.println(“SD Card detected!”);
}

void loop()
{
char str[8];
File outFile;
byte buf[256];
static int i = 0;
static int k = 0;
static int n = 0;
uint8_t temp,temp_last;
uint8_t start_capture = 0;
int total_time = 0;

//Wait trigger from shutter buttom
if(myCAM.read_reg(ARDUCHIP_TRIG) & SHUTTER_MASK)
{
isShowFlag = false;
myCAM.write_reg(ARDUCHIP_MODE, 0x00);
myCAM.set_format(JPEG);
myCAM.InitCAM();

myCAM.OV2640_set_JPEG_size(OV2640_640x480);
//myCAM.OV2640_set_JPEG_size(OV2640_1600x1200);
//Wait until buttom released
while(myCAM.read_reg(ARDUCHIP_TRIG) &amp; SHUTTER_MASK);
delay(1000);
start_capture = 1;

}
else
{
if(isShowFlag )
{
temp = myCAM.read_reg(ARDUCHIP_TRIG);

  if(!(temp &amp; VSYNC_MASK)) //New Frame is coming
  {
     myCAM.write_reg(ARDUCHIP_MODE, 0x00); //Switch to MCU
     myGLCD.resetXY();
     myCAM.write_reg(ARDUCHIP_MODE, 0x01); //Switch to CAM
     while(!(myCAM.read_reg(ARDUCHIP_TRIG)&amp;0x01)); //Wait for VSYNC is gone
  }
}

}
if(start_capture)
{
//Flush the FIFO
myCAM.flush_fifo();
//Clear the capture done flag
myCAM.clear_fifo_flag();
//Start capture
myCAM.start_capture();
Serial.println(“Start Capture”);
}

if(myCAM.read_reg(ARDUCHIP_TRIG) & CAP_DONE_MASK)
{

Serial.println("Capture Done!");

//Construct a file name
k = k + 1;
itoa(k, str, 10); 
strcat(str,".jpg");
//Open the new file  
outFile = SD.open(str,FILE_WRITE);
if (! outFile) 
{ 
  Serial.println("open file failed");
  return;
}
total_time = millis();
i = 0;
temp = myCAM.read_fifo();
//Write first image data to buffer
buf[i++] = temp;

//Read JPEG data from FIFO
while( (temp != 0xD9) | (temp_last != 0xFF) )
{
  temp_last = temp;
  temp = myCAM.read_fifo();
  //Write image data to buffer if not full
  if(i &lt; 256)
    buf[i++] = temp;
  else
  {
    //Write 256 bytes image data to file
    outFile.write(buf,256);
    i = 0;
    buf[i++] = temp;
  }
}
//Write the remain bytes in the buffer
if(i &gt; 0)
  outFile.write(buf,i);

//Close the file 
outFile.close(); 
total_time = millis() - total_time;
Serial.print("Total time used:");
Serial.print(total_time, DEC);
Serial.println(" millisecond");    
//Clear the capture done flag 
myCAM.clear_fifo_flag();
//Clear the start capture flag
start_capture = 0;

myCAM.set_format(BMP);
myCAM.InitCAM();
isShowFlag = true;	

}
}

burada neleri değiştirmem gerekiyor yardım ederseniz çok sevinirim</itoa.h></spi.h></arducam.h></wire.h></sd.h></utft_spi.h>

nesini yapamadınız ? buton mu çalışmıyor, kamera mı, yoksa sd karta mı yazamadınız, yoksa kodunuzda bir noktalama hatası mı var. projenızı parçalara ayırın her şeyi test edin.

arducam üzerindeki buton ile görüntü yakalamada sıkıntı yok ama dışarıdan bağladığım buton ile görüntü almak istiyorum fakat bir türlü beceremedim

arducam kartının uretıcıne sordunuzmu mutlaka ornek vardır ellerinde.