エレキジャック Web版 マイコン・カーを製作してみよう<21> マイコンカー制御プログラムです。http://www.eleki-jack.com/arm/2012/10/21.html このプログラムは次回の記事でアップされるパソコン用プログラムを使ってマイコンカーを制御するプログラムです。マイコンカーとパソコンの通信はXbeeを使っています。
main.cpp@4:887ced27d5d6, 2012-05-07 (annotated)
- Committer:
- sunifu
- Date:
- Mon May 07 05:57:12 2012 +0000
- Revision:
- 4:887ced27d5d6
- Parent:
- 3:ba97046adcd1
- Child:
- 5:7f85cf99d0f6
0.0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sunifu | 0:6eaa311b9d3b | 1 | /** |
sunifu | 0:6eaa311b9d3b | 2 | * Test program. |
sunifu | 0:6eaa311b9d3b | 3 | * |
sunifu | 3:ba97046adcd1 | 4 | * CameraC328Library |
sunifu | 0:6eaa311b9d3b | 5 | * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) |
sunifu | 0:6eaa311b9d3b | 6 | * http://shinta.main.jp/ |
sunifu | 3:ba97046adcd1 | 7 | * |
sunifu | 3:ba97046adcd1 | 8 | * CameraC1098-SS Library |
sunifu | 3:ba97046adcd1 | 9 | * Copyright (C) 2012 Tadao Iida |
sunifu | 0:6eaa311b9d3b | 10 | */ |
sunifu | 0:6eaa311b9d3b | 11 | |
sunifu | 0:6eaa311b9d3b | 12 | /* |
sunifu | 0:6eaa311b9d3b | 13 | * Include files. |
sunifu | 0:6eaa311b9d3b | 14 | */ |
sunifu | 0:6eaa311b9d3b | 15 | |
sunifu | 0:6eaa311b9d3b | 16 | #include "mbed.h" |
sunifu | 0:6eaa311b9d3b | 17 | #include "CameraC1098.h" |
sunifu | 0:6eaa311b9d3b | 18 | #include "SDFileSystem.h" |
sunifu | 0:6eaa311b9d3b | 19 | |
sunifu | 0:6eaa311b9d3b | 20 | /* |
sunifu | 0:6eaa311b9d3b | 21 | * Definitions. |
sunifu | 0:6eaa311b9d3b | 22 | */ |
sunifu | 0:6eaa311b9d3b | 23 | #define USE_SD_CARD 1 |
sunifu | 0:6eaa311b9d3b | 24 | |
sunifu | 0:6eaa311b9d3b | 25 | /* |
sunifu | 0:6eaa311b9d3b | 26 | * Variables. |
sunifu | 0:6eaa311b9d3b | 27 | */ |
sunifu | 0:6eaa311b9d3b | 28 | static const int CAPTURE_FRAMES = 3; |
sunifu | 4:887ced27d5d6 | 29 | static char buf[256+1]; |
sunifu | 0:6eaa311b9d3b | 30 | static FILE *fp_jpeg; |
sunifu | 0:6eaa311b9d3b | 31 | |
sunifu | 0:6eaa311b9d3b | 32 | /* |
sunifu | 0:6eaa311b9d3b | 33 | * Modules. |
sunifu | 0:6eaa311b9d3b | 34 | */ |
sunifu | 0:6eaa311b9d3b | 35 | #if USE_SD_CARD |
sunifu | 0:6eaa311b9d3b | 36 | SDFileSystem sd(p5, p6, p7, p8, "fs"); |
sunifu | 0:6eaa311b9d3b | 37 | #else |
sunifu | 0:6eaa311b9d3b | 38 | LocalFileSystem fs("fs"); |
sunifu | 0:6eaa311b9d3b | 39 | #endif |
sunifu | 0:6eaa311b9d3b | 40 | |
sunifu | 1:8f2a9b48a9e0 | 41 | CameraC1098 camera(p9, p10); |
sunifu | 0:6eaa311b9d3b | 42 | |
sunifu | 0:6eaa311b9d3b | 43 | |
sunifu | 0:6eaa311b9d3b | 44 | /** |
sunifu | 0:6eaa311b9d3b | 45 | * A callback function for jpeg images. |
sunifu | 0:6eaa311b9d3b | 46 | * You can block this function until saving the image datas. |
sunifu | 0:6eaa311b9d3b | 47 | * |
sunifu | 0:6eaa311b9d3b | 48 | * @param buf A pointer to the image buffer. |
sunifu | 0:6eaa311b9d3b | 49 | * @param siz A size of the image buffer. |
sunifu | 0:6eaa311b9d3b | 50 | */ |
sunifu | 0:6eaa311b9d3b | 51 | void jpeg_callback(char *buf, size_t siz) { |
sunifu | 0:6eaa311b9d3b | 52 | for (int i = 0; i < (int)siz; i++) { |
sunifu | 0:6eaa311b9d3b | 53 | fprintf(fp_jpeg, "%c", buf[i]); |
sunifu | 0:6eaa311b9d3b | 54 | } |
sunifu | 0:6eaa311b9d3b | 55 | } |
sunifu | 0:6eaa311b9d3b | 56 | |
sunifu | 0:6eaa311b9d3b | 57 | /** |
sunifu | 0:6eaa311b9d3b | 58 | * Synchronizing. |
sunifu | 0:6eaa311b9d3b | 59 | */ |
sunifu | 0:6eaa311b9d3b | 60 | void sync(void) { |
sunifu | 0:6eaa311b9d3b | 61 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 0:6eaa311b9d3b | 62 | |
sunifu | 0:6eaa311b9d3b | 63 | err = camera.sync(); |
sunifu | 0:6eaa311b9d3b | 64 | if (CameraC1098::NoError == err) { |
sunifu | 0:6eaa311b9d3b | 65 | printf("[ OK ] : CameraC1098::sync\r\n"); |
sunifu | 0:6eaa311b9d3b | 66 | } else { |
sunifu | 0:6eaa311b9d3b | 67 | printf("[FAIL] : CameraC1098::sync (Error=%02X)\r\n", (int)err); |
sunifu | 0:6eaa311b9d3b | 68 | } |
sunifu | 0:6eaa311b9d3b | 69 | } |
sunifu | 0:6eaa311b9d3b | 70 | |
sunifu | 0:6eaa311b9d3b | 71 | |
sunifu | 0:6eaa311b9d3b | 72 | /** |
sunifu | 0:6eaa311b9d3b | 73 | * A test function for jpeg snapshot picture. |
sunifu | 0:6eaa311b9d3b | 74 | */ |
sunifu | 0:6eaa311b9d3b | 75 | void test_jpeg_snapshot_picture(void) { |
sunifu | 0:6eaa311b9d3b | 76 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 0:6eaa311b9d3b | 77 | for (int i = 0; i < CAPTURE_FRAMES; i++) { |
sunifu | 0:6eaa311b9d3b | 78 | char fname[64]; |
sunifu | 0:6eaa311b9d3b | 79 | snprintf(fname, sizeof(fname), "/fs/jpss%04d.jpg", i); |
sunifu | 0:6eaa311b9d3b | 80 | fp_jpeg = fopen(fname, "w"); |
sunifu | 0:6eaa311b9d3b | 81 | |
sunifu | 0:6eaa311b9d3b | 82 | err = camera.getJpegSnapshotPicture(jpeg_callback); |
sunifu | 0:6eaa311b9d3b | 83 | |
sunifu | 0:6eaa311b9d3b | 84 | if (CameraC1098::NoError == err) { |
sunifu | 0:6eaa311b9d3b | 85 | printf("[ OK ] : CameraC1098::getJpegSnapshotPicture\r\n"); |
sunifu | 0:6eaa311b9d3b | 86 | } else { |
sunifu | 0:6eaa311b9d3b | 87 | printf("[FAIL] : CameraC1098::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err); |
sunifu | 0:6eaa311b9d3b | 88 | } |
sunifu | 0:6eaa311b9d3b | 89 | fclose(fp_jpeg); |
sunifu | 0:6eaa311b9d3b | 90 | } |
sunifu | 0:6eaa311b9d3b | 91 | } |
sunifu | 0:6eaa311b9d3b | 92 | |
sunifu | 0:6eaa311b9d3b | 93 | /** |
sunifu | 0:6eaa311b9d3b | 94 | * A entry point. |
sunifu | 0:6eaa311b9d3b | 95 | */ |
sunifu | 0:6eaa311b9d3b | 96 | int main() { |
sunifu | 0:6eaa311b9d3b | 97 | printf("\r\n"); |
sunifu | 2:9758930faa7e | 98 | printf("==========\r\n"); |
sunifu | 0:6eaa311b9d3b | 99 | printf("CameraC1098\r\n"); |
sunifu | 0:6eaa311b9d3b | 100 | printf("==========\r\n"); |
sunifu | 0:6eaa311b9d3b | 101 | CameraC1098::ErrorNumber err = CameraC1098::NoError; |
sunifu | 4:887ced27d5d6 | 102 | err = camera.init(CameraC1098::Baud28800, CameraC1098::JpegResolution80x64); |
sunifu | 0:6eaa311b9d3b | 103 | |
sunifu | 0:6eaa311b9d3b | 104 | if (CameraC1098::NoError == err) { |
sunifu | 0:6eaa311b9d3b | 105 | printf("[ OK ] : CameraC1098::init\r\n"); |
sunifu | 0:6eaa311b9d3b | 106 | } else { |
sunifu | 0:6eaa311b9d3b | 107 | printf("[FAIL] : CameraC1098::init (Error=%02X)\r\n", (int)err); |
sunifu | 0:6eaa311b9d3b | 108 | } |
sunifu | 4:887ced27d5d6 | 109 | // |
sunifu | 4:887ced27d5d6 | 110 | //sync(); |
sunifu | 4:887ced27d5d6 | 111 | //test_jpeg_snapshot_picture(); |
sunifu | 0:6eaa311b9d3b | 112 | |
sunifu | 0:6eaa311b9d3b | 113 | return 0; |
sunifu | 0:6eaa311b9d3b | 114 | } |