main.cpp

Committer:
esmiwa
Date:
2012-06-17
Revision:
0:5bf7e3564c3b

File content as of revision 0:5bf7e3564c3b:

//main.cpp
#include "mbed.h"
#include "CameraC1098.h"
#include "SDFileSystem.h"
#include "TextLCD.h"

// Definitions.
#define USE_JPEG_HIGH_RESOLUTION  1
#define USE_SD_CARD 0

//Variables.
static const int RAWIMG_X = 80;
static const int RAWIMG_Y = 60;
static char buf[RAWIMG_X * RAWIMG_Y * 2];
static FILE *fp_jpeg;
static const int packageSize = 512;
int i=0;
int shutter=0;
//Modules.
#if USE_SD_CARD   //USE_SD_CDARD=0:Local, =1:SD
SDFileSystem sd(p5, p6, p7, p8, "fs");
#else
LocalFileSystem fs("fs");
#endif

//CameraC1098
CameraC1098 camera(p9, p10, CameraC1098::Baud14400);
//ErrorNunber constracture 
bool err;
//
//CameraC1098::NoError = 0x00;

//TextLCD
TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7
//LED 
DigitalOut myled1(LED1);
DigitalOut myled4(LED4);
InterruptIn tact(p22);
//setting camera
void camera_set(void) {
    err = camera.sync();    //syncronising
    err = camera.init(CameraC1098::JpegResolution640x480);  //initialising
    err = camera.getnewbaud();  //change baudrate 14400 -> 115200bps
}
//setting packetsize
void packagesize_set(void){
    err = camera.setupPackageSize(packageSize);
}  
//saving image data to fp_jpd
void jpeg_callback(char *buf, size_t siz) {  //*buf:image buffer size, siz:image size
    for (int i = 0; i < (int)siz; i++) {
        fprintf(fp_jpeg, "%c", buf[i]);
    }
}
//getting Jpeg snapshot picture
void snapshot_get(void) 
{
    char fname[64];
    snprintf(fname, sizeof(fname), "/fs/image%02d.jpg",i);
    fp_jpeg = fopen(fname, "w");
    err = camera.getJpegSnapshotPicture(jpeg_callback);
    fclose(fp_jpeg);
 } 
//shutter(p22)
void getshutter(){
    shutter=1;
}
//
int main() 
{
    tact.fall(&getshutter);   
    lcd.cls();lcd.printf("Camera C1098");
    camera_set();
    wait_ms(100);
    packagesize_set();
    lcd.cls();lcd.printf("camera OK");
    while(1){
        if(shutter==1){
            myled1=1;lcd.cls();
                snapshot_get();
                shutter=0;
                i++;
            myled1=0;lcd.cls();lcd.printf("NEXT OK");
        }
        myled4=!myled4;
        wait(0.25);
    }
}