Toma de foto y descomprimir en HEX

Dependencies:   JPEGCamera SDFileSystem mbed

Fork of SaibiCansat2014 by Takashi SASAKI

Committer:
TakashiSasaki
Date:
Thu Jul 17 23:30:16 2014 +0000
Revision:
8:3230ddd3a3d1
Parent:
7:cc8080b31ac5
Child:
9:3a2d25f4700b
LinkSprite at 115200bps

Who changed what in which revision?

UserRevisionLine numberNew contents of line
TakashiSasaki 6:9824d4e2f29b 1 #ifndef FAST_JPEG_CAMERA_H
TakashiSasaki 6:9824d4e2f29b 2 #define FAST_JPEG_CAMERA_H
TakashiSasaki 6:9824d4e2f29b 3
TakashiSasaki 6:9824d4e2f29b 4 #include "JPEGCamera/JPEGCamera.h"
TakashiSasaki 6:9824d4e2f29b 5
TakashiSasaki 6:9824d4e2f29b 6 #define FILENAME "/sd/pict%03d.jpg"
TakashiSasaki 6:9824d4e2f29b 7
TakashiSasaki 6:9824d4e2f29b 8 class FastJpegCamera : public JPEGCamera {
TakashiSasaki 6:9824d4e2f29b 9 public:
TakashiSasaki 6:9824d4e2f29b 10 DigitalOut myled1; //show successful picture was taken
TakashiSasaki 6:9824d4e2f29b 11 int baudrate;
TakashiSasaki 6:9824d4e2f29b 12 Serial pc;
TakashiSasaki 6:9824d4e2f29b 13
TakashiSasaki 6:9824d4e2f29b 14 FastJpegCamera(PinName tx, PinName rx) : JPEGCamera(tx,rx), baudrate(38400), pc(USBTX, USBRX), myled1(LED1){
TakashiSasaki 8:3230ddd3a3d1 15 this->baud115200();
TakashiSasaki 6:9824d4e2f29b 16 };
TakashiSasaki 6:9824d4e2f29b 17
TakashiSasaki 6:9824d4e2f29b 18 void baud115200(){
TakashiSasaki 6:9824d4e2f29b 19 char buf[7] = {0x56, 0x00, 0x24, 0x03, 0x01, 0x0d, 0xa6};
TakashiSasaki 6:9824d4e2f29b 20 //char buf[5] = {0x56, 0x00, 0x34, 0x0d, 0xa6};
TakashiSasaki 6:9824d4e2f29b 21 //int ret = sendReceive(buf, sizeof buf, 5);
TakashiSasaki 6:9824d4e2f29b 22 for (int i = 0; i < sizeof buf; i++) putc(buf[i]);
TakashiSasaki 8:3230ddd3a3d1 23 wait(0.5);
TakashiSasaki 6:9824d4e2f29b 24 this->baudrate = 115200;
TakashiSasaki 6:9824d4e2f29b 25 this->baud(this->baudrate);
TakashiSasaki 6:9824d4e2f29b 26 wait(4);
TakashiSasaki 6:9824d4e2f29b 27 //this->reset();
TakashiSasaki 6:9824d4e2f29b 28 receive(buf, 5, 500);
TakashiSasaki 6:9824d4e2f29b 29 pc.printf("%02x %02x %02x %02x %02x", buf[0], buf[1], buf[2], buf[3], buf[4]);
TakashiSasaki 6:9824d4e2f29b 30 };
TakashiSasaki 6:9824d4e2f29b 31
TakashiSasaki 6:9824d4e2f29b 32 void baud57600(){
TakashiSasaki 6:9824d4e2f29b 33 char buf[7] = {0x56, 0x00, 0x24, 0x03, 0x01, 0x1c, 0x4c};
TakashiSasaki 6:9824d4e2f29b 34 int ret = sendReceive(buf, sizeof buf, 5);
TakashiSasaki 6:9824d4e2f29b 35 wait(0.5);
TakashiSasaki 6:9824d4e2f29b 36 this->reset();
TakashiSasaki 6:9824d4e2f29b 37 this->baudrate = 57600;
TakashiSasaki 6:9824d4e2f29b 38 this->baud(this->baudrate);
TakashiSasaki 6:9824d4e2f29b 39 };
TakashiSasaki 6:9824d4e2f29b 40
TakashiSasaki 6:9824d4e2f29b 41
TakashiSasaki 6:9824d4e2f29b 42 void baud38400(){
TakashiSasaki 6:9824d4e2f29b 43 char buf[7] = {0x56, 0x00, 0x24, 0x03, 0x01, 0x2a, 0xf2};
TakashiSasaki 8:3230ddd3a3d1 44 //int ret = sendReceive(buf, sizeof buf, 5);
TakashiSasaki 8:3230ddd3a3d1 45 for (int i = 0; i < sizeof buf; i++) putc(buf[i]);
TakashiSasaki 6:9824d4e2f29b 46 wait(0.5);
TakashiSasaki 6:9824d4e2f29b 47 //this->reset();
TakashiSasaki 6:9824d4e2f29b 48 this->baudrate = 38400;
TakashiSasaki 6:9824d4e2f29b 49 this->baud(this->baudrate);
TakashiSasaki 8:3230ddd3a3d1 50 wait(4);
TakashiSasaki 8:3230ddd3a3d1 51 //this->reset();
TakashiSasaki 8:3230ddd3a3d1 52 receive(buf, 5, 500);
TakashiSasaki 6:9824d4e2f29b 53 pc.printf("%02x %02x %02x %02x %02x", buf[0], buf[1], buf[2], buf[3], buf[4]);
TakashiSasaki 6:9824d4e2f29b 54 };
TakashiSasaki 6:9824d4e2f29b 55
TakashiSasaki 6:9824d4e2f29b 56 void shoot(int i){
TakashiSasaki 6:9824d4e2f29b 57
TakashiSasaki 6:9824d4e2f29b 58 if (!this->isReady()) {
TakashiSasaki 7:cc8080b31ac5 59 pc.printf("show camera is not ready\n");
TakashiSasaki 6:9824d4e2f29b 60 //myled4 = 1; //show camera is not ready
TakashiSasaki 6:9824d4e2f29b 61 //wait(2.0);
TakashiSasaki 6:9824d4e2f29b 62 //myled4 = 0;
TakashiSasaki 6:9824d4e2f29b 63 return;
TakashiSasaki 6:9824d4e2f29b 64 }//if
TakashiSasaki 6:9824d4e2f29b 65
TakashiSasaki 6:9824d4e2f29b 66 char filename[32];
TakashiSasaki 6:9824d4e2f29b 67 sprintf(filename, FILENAME, i);
TakashiSasaki 6:9824d4e2f29b 68 printf("Picture: %s ", filename);
TakashiSasaki 6:9824d4e2f29b 69 myled1 = 1;
TakashiSasaki 6:9824d4e2f29b 70 if (this->takePicture(filename)) {
TakashiSasaki 6:9824d4e2f29b 71 while (this->isProcessing()) {
TakashiSasaki 6:9824d4e2f29b 72 this->processPicture();
TakashiSasaki 6:9824d4e2f29b 73 }//while
TakashiSasaki 6:9824d4e2f29b 74 //myled1 = 1; //show successful picture was taken
TakashiSasaki 6:9824d4e2f29b 75 //wait(2.0);
TakashiSasaki 6:9824d4e2f29b 76 //myled1 = 0;
TakashiSasaki 6:9824d4e2f29b 77 } else {
TakashiSasaki 7:cc8080b31ac5 78 pc.printf("shot %s\n", filename);
TakashiSasaki 6:9824d4e2f29b 79 //myled3 = 1; //show picture take failed
TakashiSasaki 6:9824d4e2f29b 80 //wait(2.0);
TakashiSasaki 6:9824d4e2f29b 81 //myled3 = 0;
TakashiSasaki 6:9824d4e2f29b 82 }//if
TakashiSasaki 7:cc8080b31ac5 83 this->stopPictures();
TakashiSasaki 6:9824d4e2f29b 84 myled1 = 0;
TakashiSasaki 6:9824d4e2f29b 85 };//shoot
TakashiSasaki 6:9824d4e2f29b 86
TakashiSasaki 6:9824d4e2f29b 87 };//FastJpegCamera
TakashiSasaki 6:9824d4e2f29b 88
TakashiSasaki 6:9824d4e2f29b 89 #endif