Ch4_5. mbed에 카메라 장착하기
학습 내용
Camera LS Y201
배선도 & 회로도

- VCC :5v
- Tx :mbed serial rx (e.g. p13)
- Rx :mbed serial tx (e.g. p14)
- GND :0v/GND
배선 사진
코딩
#include "mbed.h"
#include "Camera_LS_Y201.h"
#include "SDFileSystem.h"
#define DEBMSG printf
#define NEWLINE() printf("\r\n")
#define USE_SDCARD 0
#if USE_SDCARD
#define FILENAME "/sd/IMG_%04d.jpg"
SDFileSystem fs(p5, p6, p7, p8, "sd");
#else
#define FILENAME "/local/IMG_%04d.jpg"
LocalFileSystem fs("local");
#endif
Camera_LS_Y201 cam1(p13, p14);
typedef struct work {
FILE *fp;
} work_t;
work_t work;
/**
* Callback function for readJpegFileContent.
*
* @param buf A pointer to a buffer.
* @param siz A size of the buffer.
*/
void callback_func(int done, int total, uint8_t *buf, size_t siz) {
fwrite(buf, siz, 1, work.fp);
static int n = 0;
int tmp = done * 100 / total;
if (n != tmp) {
n = tmp;
DEBMSG("Writing...: %3d%%", n);
NEWLINE();
}
}
/**
* Capture.
*
* @param cam A pointer to a camera object.
* @param filename The file name.
*
* @return Return 0 if it succeed.
*/
int capture(Camera_LS_Y201 *cam, char *filename) {
/*
* Take a picture.
*/
if (cam->takePicture() != 0) {
return -1;
}
DEBMSG("Captured.");
NEWLINE();
/*
* Open file.
*/
work.fp = fopen(filename, "wb");
if (work.fp == NULL) {
return -2;
}
/*
* Read the content.
*/
DEBMSG("%s", filename);
NEWLINE();
if (cam->readJpegFileContent(callback_func) != 0) {
fclose(work.fp);
return -3;
}
fclose(work.fp);
/*
* Stop taking pictures.
*/
cam->stopTakingPictures();
return 0;
}
/**
* Entry point.
*/
int main(void) {
DEBMSG("Camera module");
NEWLINE();
DEBMSG("Resetting...");
NEWLINE();
wait(1);
if (cam1.reset() == 0) {
DEBMSG("Reset OK.");
NEWLINE();
} else {
DEBMSG("Reset fail.");
NEWLINE();
error("Reset fail.");
}
wait(1);
int cnt = 0;
while (1) {
char fname[64];
snprintf(fname, sizeof(fname) - 1, FILENAME, cnt);
int r = capture(&cam1, fname);
if (r == 0) {
DEBMSG("[%04d]:OK.", cnt);
NEWLINE();
} else {
DEBMSG("[%04d]:NG. (code=%d)", cnt, r);
NEWLINE();
error("Failure.");
}
cnt++;
}
}
Warning!
There are two versions of the camera.
The one of the model is RS-232C interface.
The other is TTL interface model.
Please do NOT connect RS-232C interface model directly.
You can connect TTL interface model only.
라이브러리
Import library
| Camera_LS_Y201 | Camera |
| SerialBuffered | Buffered serial class |
•Camera_LS_Y201() : Camera_LS_Y201
•getc() : SerialBuffered
•readable() : SerialBuffered
•readBytes() : SerialBuffered
•readJpegFileContent() : Camera_LS_Y201
•readJpegFileSize() : Camera_LS_Y201
•reset() : Camera_LS_Y201
•SerialBuffered() : SerialBuffered
•setImageSize() : Camera_LS_Y201
•setTimeout() : SerialBuffered
•stopTakingPictures() : Camera_LS_Y201
•takePicture() : Camera_LS_Y201
•Camera_LS_Y201() : Camera_LS_Y201
•SerialBuffered() : SerialBuffered
학습 참고

Please log in to post comments.
