たけし みわ
/
y_CameraC1098_ES_01
main.cpp@0:5bf7e3564c3b, 2012-06-17 (annotated)
- Committer:
- esmiwa
- Date:
- Sun Jun 17 01:15:35 2012 +0000
- Revision:
- 0:5bf7e3564c3b
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
esmiwa | 0:5bf7e3564c3b | 1 | //main.cpp |
esmiwa | 0:5bf7e3564c3b | 2 | #include "mbed.h" |
esmiwa | 0:5bf7e3564c3b | 3 | #include "CameraC1098.h" |
esmiwa | 0:5bf7e3564c3b | 4 | #include "SDFileSystem.h" |
esmiwa | 0:5bf7e3564c3b | 5 | #include "TextLCD.h" |
esmiwa | 0:5bf7e3564c3b | 6 | |
esmiwa | 0:5bf7e3564c3b | 7 | // Definitions. |
esmiwa | 0:5bf7e3564c3b | 8 | #define USE_JPEG_HIGH_RESOLUTION 1 |
esmiwa | 0:5bf7e3564c3b | 9 | #define USE_SD_CARD 0 |
esmiwa | 0:5bf7e3564c3b | 10 | |
esmiwa | 0:5bf7e3564c3b | 11 | //Variables. |
esmiwa | 0:5bf7e3564c3b | 12 | static const int RAWIMG_X = 80; |
esmiwa | 0:5bf7e3564c3b | 13 | static const int RAWIMG_Y = 60; |
esmiwa | 0:5bf7e3564c3b | 14 | static char buf[RAWIMG_X * RAWIMG_Y * 2]; |
esmiwa | 0:5bf7e3564c3b | 15 | static FILE *fp_jpeg; |
esmiwa | 0:5bf7e3564c3b | 16 | static const int packageSize = 512; |
esmiwa | 0:5bf7e3564c3b | 17 | int i=0; |
esmiwa | 0:5bf7e3564c3b | 18 | int shutter=0; |
esmiwa | 0:5bf7e3564c3b | 19 | //Modules. |
esmiwa | 0:5bf7e3564c3b | 20 | #if USE_SD_CARD //USE_SD_CDARD=0:Local, =1:SD |
esmiwa | 0:5bf7e3564c3b | 21 | SDFileSystem sd(p5, p6, p7, p8, "fs"); |
esmiwa | 0:5bf7e3564c3b | 22 | #else |
esmiwa | 0:5bf7e3564c3b | 23 | LocalFileSystem fs("fs"); |
esmiwa | 0:5bf7e3564c3b | 24 | #endif |
esmiwa | 0:5bf7e3564c3b | 25 | |
esmiwa | 0:5bf7e3564c3b | 26 | //CameraC1098 |
esmiwa | 0:5bf7e3564c3b | 27 | CameraC1098 camera(p9, p10, CameraC1098::Baud14400); |
esmiwa | 0:5bf7e3564c3b | 28 | //ErrorNunber constracture |
esmiwa | 0:5bf7e3564c3b | 29 | bool err; |
esmiwa | 0:5bf7e3564c3b | 30 | // |
esmiwa | 0:5bf7e3564c3b | 31 | //CameraC1098::NoError = 0x00; |
esmiwa | 0:5bf7e3564c3b | 32 | |
esmiwa | 0:5bf7e3564c3b | 33 | //TextLCD |
esmiwa | 0:5bf7e3564c3b | 34 | TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d4-d7 |
esmiwa | 0:5bf7e3564c3b | 35 | //LED |
esmiwa | 0:5bf7e3564c3b | 36 | DigitalOut myled1(LED1); |
esmiwa | 0:5bf7e3564c3b | 37 | DigitalOut myled4(LED4); |
esmiwa | 0:5bf7e3564c3b | 38 | InterruptIn tact(p22); |
esmiwa | 0:5bf7e3564c3b | 39 | //setting camera |
esmiwa | 0:5bf7e3564c3b | 40 | void camera_set(void) { |
esmiwa | 0:5bf7e3564c3b | 41 | err = camera.sync(); //syncronising |
esmiwa | 0:5bf7e3564c3b | 42 | err = camera.init(CameraC1098::JpegResolution640x480); //initialising |
esmiwa | 0:5bf7e3564c3b | 43 | err = camera.getnewbaud(); //change baudrate 14400 -> 115200bps |
esmiwa | 0:5bf7e3564c3b | 44 | } |
esmiwa | 0:5bf7e3564c3b | 45 | //setting packetsize |
esmiwa | 0:5bf7e3564c3b | 46 | void packagesize_set(void){ |
esmiwa | 0:5bf7e3564c3b | 47 | err = camera.setupPackageSize(packageSize); |
esmiwa | 0:5bf7e3564c3b | 48 | } |
esmiwa | 0:5bf7e3564c3b | 49 | //saving image data to fp_jpd |
esmiwa | 0:5bf7e3564c3b | 50 | void jpeg_callback(char *buf, size_t siz) { //*buf:image buffer size, siz:image size |
esmiwa | 0:5bf7e3564c3b | 51 | for (int i = 0; i < (int)siz; i++) { |
esmiwa | 0:5bf7e3564c3b | 52 | fprintf(fp_jpeg, "%c", buf[i]); |
esmiwa | 0:5bf7e3564c3b | 53 | } |
esmiwa | 0:5bf7e3564c3b | 54 | } |
esmiwa | 0:5bf7e3564c3b | 55 | //getting Jpeg snapshot picture |
esmiwa | 0:5bf7e3564c3b | 56 | void snapshot_get(void) |
esmiwa | 0:5bf7e3564c3b | 57 | { |
esmiwa | 0:5bf7e3564c3b | 58 | char fname[64]; |
esmiwa | 0:5bf7e3564c3b | 59 | snprintf(fname, sizeof(fname), "/fs/image%02d.jpg",i); |
esmiwa | 0:5bf7e3564c3b | 60 | fp_jpeg = fopen(fname, "w"); |
esmiwa | 0:5bf7e3564c3b | 61 | err = camera.getJpegSnapshotPicture(jpeg_callback); |
esmiwa | 0:5bf7e3564c3b | 62 | fclose(fp_jpeg); |
esmiwa | 0:5bf7e3564c3b | 63 | } |
esmiwa | 0:5bf7e3564c3b | 64 | //shutter(p22) |
esmiwa | 0:5bf7e3564c3b | 65 | void getshutter(){ |
esmiwa | 0:5bf7e3564c3b | 66 | shutter=1; |
esmiwa | 0:5bf7e3564c3b | 67 | } |
esmiwa | 0:5bf7e3564c3b | 68 | // |
esmiwa | 0:5bf7e3564c3b | 69 | int main() |
esmiwa | 0:5bf7e3564c3b | 70 | { |
esmiwa | 0:5bf7e3564c3b | 71 | tact.fall(&getshutter); |
esmiwa | 0:5bf7e3564c3b | 72 | lcd.cls();lcd.printf("Camera C1098"); |
esmiwa | 0:5bf7e3564c3b | 73 | camera_set(); |
esmiwa | 0:5bf7e3564c3b | 74 | wait_ms(100); |
esmiwa | 0:5bf7e3564c3b | 75 | packagesize_set(); |
esmiwa | 0:5bf7e3564c3b | 76 | lcd.cls();lcd.printf("camera OK"); |
esmiwa | 0:5bf7e3564c3b | 77 | while(1){ |
esmiwa | 0:5bf7e3564c3b | 78 | if(shutter==1){ |
esmiwa | 0:5bf7e3564c3b | 79 | myled1=1;lcd.cls(); |
esmiwa | 0:5bf7e3564c3b | 80 | snapshot_get(); |
esmiwa | 0:5bf7e3564c3b | 81 | shutter=0; |
esmiwa | 0:5bf7e3564c3b | 82 | i++; |
esmiwa | 0:5bf7e3564c3b | 83 | myled1=0;lcd.cls();lcd.printf("NEXT OK"); |
esmiwa | 0:5bf7e3564c3b | 84 | } |
esmiwa | 0:5bf7e3564c3b | 85 | myled4=!myled4; |
esmiwa | 0:5bf7e3564c3b | 86 | wait(0.25); |
esmiwa | 0:5bf7e3564c3b | 87 | } |
esmiwa | 0:5bf7e3564c3b | 88 | } |