TTL Serial Camera - Image Size

For other supported Arduino products from Adafruit: Shields, accessories, etc.

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
Locked
msamit
 
Posts: 5
Joined: Tue Jan 14, 2014 1:01 pm

TTL Serial Camera - Image Size

Post by msamit »

Hi,

I'm using the following code to capture a medium size image and store it into the microSD card. I'm following the adafruit tutorial on how to use the TTL Serial Camera VC0706 but for some reason I'm unable to get a medium or small size image.

It's strange because I'm only un-commenting the command for a medium size image
//cam.setImageSize(VC0706_640x480); // biggest
cam.setImageSize(VC0706_320x240); // medium
//cam.setImageSize(VC0706_160x120); // small

Code: Select all

// If using an Arduino Mega (1280, 2560 or ADK) in conjunction
// with an SD card shield designed for conventional Arduinos
// (Uno, etc.), it's necessary to edit the library file:
//   libraries/SD/utility/Sd2Card.h
// Look for this line:
//   #define MEGA_SOFT_SPI 0
// change to:
//   #define MEGA_SOFT_SPI 1
#include <Adafruit_VC0706.h>
#include <SD.h>
#include <SoftwareSerial.h>         
#define chipSelect 10

// Using SoftwareSerial (Arduino 1.0+) or NewSoftSerial (Arduino 0023 & prior):
#if ARDUINO >= 100
// On Uno: camera TX connected to pin 2, camera RX to pin 3:
SoftwareSerial cameraconnection = SoftwareSerial(2, 3);
// On Mega: camera TX connected to pin 69 (A15), camera RX to pin 3:
//SoftwareSerial cameraconnection = SoftwareSerial(69, 3);
#else
NewSoftSerial cameraconnection = NewSoftSerial(2, 3);
#endif

Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection);

//int d=4;
char request;

void setup() {
 
  CameraSetup ();
  
 }
 
 void TakePicture () {
                  
  digitalWrite(4,HIGH);      
                      
  Serial.println("VC0706 Camera snapshot test");
  
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }  
  
  // 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(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");
  digitalWrite(4,LOW);

}    

void CameraSetup () {
 
  #if !defined(SOFTWARE_SPI)
#if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)
  if(chipSelect != 53) pinMode(53, OUTPUT); // SS on Mega
#else
  if(chipSelect != 10) pinMode(10, OUTPUT); // SS on Uno, etc.
#endif
#endif

  //pinMode(4,INPUT);
  pinMode(4,OUTPUT);
  
  Serial.begin(9600); 
}


void loop() {
  
  if (Serial.available())
  {
    request = Serial.read();}
    
 
  if ( request == 'I'){
 
  TakePicture ();
  request = 'K';
  } 
  delay(250);
  }

I would highly appreciate some help!

msamit
 
Posts: 5
Joined: Tue Jan 14, 2014 1:01 pm

Re: TTL Serial Camera - Image Size

Post by msamit »

It always captures a large size image..

msamit
 
Posts: 5
Joined: Tue Jan 14, 2014 1:01 pm

Re: TTL Serial Camera - Image Size

Post by msamit »

I'm using the example snapshot code provided in the Adafruit_VC0706 library but I'm selecting the small image size option but the camera still keeps capturing the large image size only. It doesn't work for small or medium size images. Please see the attached pictures for more details.

C:\Program Files (x86)\Arduino\libraries\Adafruit_VC0706\examples\Snapshot

Am I doing something wrong? Please help!
Attachments
The cam.getImageSize(); function doesn't get higlighted. Is that a problem?
The cam.getImageSize(); function doesn't get higlighted. Is that a problem?
error 2.png (72.39 KiB) Viewed 192 times
Seems like the command that sets the image size doesn't get executed..
Seems like the command that sets the image size doesn't get executed..
error.png (178.86 KiB) Viewed 192 times

Locked
Please be positive and constructive with your questions and comments.

Return to “Other Arduino products from Adafruit”