Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
00001 /** 00002 * Test program. 00003 * 00004 * CameraC328Library 00005 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) 00006 * http://shinta.main.jp/ 00007 * 00008 * CameraC1098-SS Library 00009 * Copyright (C) 2012 Tadao Iida 00010 */ 00011 00012 /* 00013 * Include files. 00014 */ 00015 00016 #include "mbed.h" 00017 #include "CameraC1098.h" 00018 #include "TextLCD.h" 00019 00020 /* 00021 * Definitions. 00022 */ 00023 TextLCD lcd(p24, p26, p27, p28, p29, p30); 00024 CameraC1098 camera(p9, p10); 00025 00026 /* 00027 * Variables. 00028 */ 00029 PwmOut steering(p25) ; 00030 PwmOut speed_in1(p22) ; 00031 PwmOut speed_in2(p23) ; 00032 Serial pc(p13,p14); 00033 00034 static char buf[256+1]; 00035 volatile char steer; 00036 00037 /** 00038 * A callback function for jpeg images. 00039 * You can block this function until saving the image datas. 00040 * 00041 * @param buf A pointer to the image buffer. 00042 * @param siz A size of the image buffer. 00043 */ 00044 void jpeg_callback(char *buf, size_t siz) { 00045 for (int i = 0; i < (int)siz; i++) { 00046 pc.putc(buf[i]) ; 00047 } 00048 } 00049 00050 /** 00051 * Synchronizing. 00052 */ 00053 void sync(void) { 00054 CameraC1098::ErrorNumber err = CameraC1098::NoError; 00055 00056 err = camera.sync(); 00057 lcd.locate(0,0); 00058 if (CameraC1098::NoError == err) { 00059 printf("[ OK ] : CameraC1098::sync\r\n"); 00060 lcd.printf("Camera Sync [OK]"); 00061 } else { 00062 printf("[FAIL] : CameraC1098::sync (Error=%02X)\r\n", (int)err); 00063 lcd.printf("Camera init [NG]"); 00064 } 00065 } 00066 00067 00068 /** 00069 * A test function for jpeg snapshot picture. 00070 */ 00071 void test_jpeg_snapshot_picture(void) { 00072 CameraC1098::ErrorNumber err = CameraC1098::NoError; 00073 00074 err = camera.getJpegSnapshotPicture(jpeg_callback); 00075 00076 lcd.locate(0,0); 00077 if (CameraC1098::NoError == err) { 00078 printf("[ OK ] : CameraC1098::getJpegSnapshotPicture\r\n"); 00079 lcd.printf("Camera send [OK]"); 00080 } else { 00081 printf("[FAIL] : CameraC1098::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err); 00082 lcd.printf("Camera send [NG]"); 00083 } 00084 } 00085 00086 void rxFunc(){ 00087 steer = pc.getc(); 00088 } 00089 00090 int main() { 00091 float sp1, sp2; 00092 int st; 00093 00094 wait(2.0) ; 00095 pc.attach(&rxFunc,Serial::RxIrq); 00096 00097 printf("\r\n"); 00098 printf("==========\r\n"); 00099 printf("CameraC1098\r\n"); 00100 printf("==========\r\n"); 00101 CameraC1098::ErrorNumber err = CameraC1098::NoError; 00102 err = camera.init(CameraC1098::Baud115200, CameraC1098::JpegResolution160x128); 00103 camera.setmbedBaud( CameraC1098::Baud115200 ); 00104 pc.baud(115200); 00105 00106 00107 lcd.locate(0,0); 00108 if (CameraC1098::NoError == err) { 00109 printf("[ OK ] : CameraC1098::init\r\n") ; 00110 lcd.printf("Camera init [OK]"); 00111 } else { 00112 printf("[FAIL] : CameraC1098::init (Error=%02X)\r\n", (int)err) ; 00113 lcd.printf("Camera init[NG]"); 00114 exit(-1); 00115 } 00116 // 00117 sync(); 00118 00119 steering.period(0.020); 00120 speed_in1.period(0.1) ; 00121 speed_in2.period(0.1) ; 00122 00123 while(1){ 00124 00125 lcd.locate(0,1); 00126 switch(steer){ 00127 case 'S': 00128 lcd.printf("pictshort "); 00129 test_jpeg_snapshot_picture(); 00130 break; 00131 case '0': 00132 lcd.printf(" "); 00133 st = 1500; 00134 sp1 = 0.0f ; 00135 sp2 = 0.0f ; 00136 break; 00137 case '1': 00138 lcd.printf("FORWARD "); 00139 st = 1500; 00140 sp1 = 0.7f ; 00141 sp2 = 0.0f ; 00142 break; 00143 case '2': 00144 lcd.printf("BACK "); 00145 st = 1500; 00146 sp1 = 0.0f ; 00147 sp2 = 0.7f ; 00148 break; 00149 case '6': 00150 lcd.printf("FORWARD+LEFT "); 00151 st = 1200; 00152 sp1 = 0.7f ; 00153 sp2 = 0.0f ; 00154 break; 00155 case '7': 00156 lcd.printf("FORWARD+RIGHT "); 00157 st = 1800; 00158 sp1 = 0.7f ; 00159 sp2 = 0.0f ; 00160 break; 00161 case 'A': 00162 lcd.printf("BACK+LEFT "); 00163 st = 1200; 00164 sp1 = 0.0f ; 00165 sp2 = 0.7f ; 00166 break; 00167 case 'B': 00168 lcd.printf("BACK+RIGHT "); 00169 st = 1800; 00170 sp1 = 0.0f ; 00171 sp2 = 0.7f ; 00172 break; 00173 case 'F': 00174 lcd.printf("STOP "); 00175 st = 1500; 00176 sp1 = 0.0 ; 00177 sp2 = 0.0 ; 00178 break; 00179 default: 00180 lcd.printf(" "); 00181 st = 1500; 00182 sp1 = 0.0 ; 00183 sp2 = 0.0 ; 00184 } 00185 steering.pulsewidth_us(st); 00186 speed_in1.write(sp1) ; 00187 speed_in2.write(sp2) ; 00188 } 00189 00190 }
Generated on Mon Jul 18 2022 14:52:58 by
1.7.2