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) & SHUTTER_MASK);
delay(1000);
start_capture = 1;
}
else
{
if(isShowFlag )
{
temp = myCAM.read_reg(ARDUCHIP_TRIG);
if(!(temp & 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)&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 < 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 > 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>