HOme Sheriff And Lamp
Dependencies: CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed
Fork of HoSAL by
Revision 2:3c7526a1893a, committed 2015-08-11
- Comitter:
- uasonice
- Date:
- Tue Aug 11 16:30:37 2015 +0000
- Parent:
- 1:bf5b84edf434
- Child:
- 3:8c4e0e7c8cea
- Commit message:
- update get_distance(); support param instance handle
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/CameraC328.lib Tue Aug 11 16:30:37 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/shintamainjp/code/CameraC328/#49cfda6c547f
--- a/main.cpp Tue Aug 11 16:07:05 2015 +0000
+++ b/main.cpp Tue Aug 11 16:30:37 2015 +0000
@@ -17,7 +17,8 @@
Serial uart(USBTX, USBRX); // tx, rx
-HCSR04 sensor(D12, D11);
+//HCSR04 sensor(D12, D11);
+HCSR04 *g_pHcrs;
DigitalOut led1(LED1); //server listning status
DigitalOut led2(LED2); //socket connecting status
@@ -37,38 +38,12 @@
ledTick.attach(&ledTickfunc,0.5);
uart.baud(115200);
- DM_fLN("Start ----> HCSR04");
+ DM_fLN("init");
+ g_pHcrs = new HCSR04(D12, D11);
while(1) {
-#if 0
- long distance = sensor.distance();
-
- //ryuhs74@20150712 START -
- if( index_dist < 3){
- sum_dist[index_dist] = distance;
- DM_fLN("sum_dist[%d] = %d", index_dist, sum_dist[index_dist]);
- index_dist ++;
- wait_ms(200);
- } else {
- avg_dist = 0;
- index_dist = 0;
-
- for(int i =0; i<3;i++){
- avg_dist += sum_dist[i];
- }
-
- avg_dist /= 3;
- DM_fLN("average: %d", avg_dist);
-
- if( avg_dist <= CHECK_DISTANCE ){
-
- }
- wait_ms(1000);
- }
-#else
- get_distance();
+ get_distance(g_pHcrs);
wait_ms(1000);
-#endif
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/rev_Camera.cpp Tue Aug 11 16:30:37 2015 +0000
@@ -0,0 +1,107 @@
+/*
+# coded by revival / uasonice (at) gmail.com
+# DATE: 2015/08/09 / Sun Aug 9 23:55:31 KST 2015
+#
+# DESCRIPTION:
+# rev Camera utility
+*/
+
+#include "mbed.h"
+#include "CameraC328.h"
+
+#define DEBUG_TYPE 1
+#define P_ uart.printf
+#include "rev_config.h"
+
+#include "rev_Camera.h"
+
+
+#if defined(USE_CAMERA)
+static FILE *fp_jpeg;
+
+//CameraC328 cam(PA_14, PA_13, CameraC328::Baud14400);
+//CameraC328::JpegResolution camResul;
+
+
+/**
+ * A callback function for jpeg images.
+ * You can block this function until saving the image datas.
+ *
+ * @param buf A pointer to the image buffer.
+ * @param siz A size of the image buffer.
+ */
+void cb_jpeg(char *buf, size_t szImage) {
+ for (int i = 0; i < (int)szImage; i++) {
+ fprintf(fp_jpeg, "%c", buf[i]);
+ }
+}
+
+/**
+ * Synchronizing.
+ */
+void revSync(void) {
+ CameraC328::ErrorNumber err = CameraC328::NoError;
+
+ err = cam.sync();
+ if (CameraC328::NoError == err) {
+ DM_fLN("[ OK ] : CameraC328::sync");
+ } else {
+ DM_fLN("[FAIL] : CameraC328::sync (Error=%02X)", (int)err);
+ }
+}
+
+/**
+ * jpeg snapshot picture.
+ * param strFile: "/fs/file01.jpg"
+ * param resol : CameraC328::JpegResolution640x480, CameraC328::JpegResolution320x240
+ */
+void revJpeg_snapshot(char *strFile, CameraC328::JpegResolution resol) {
+ CameraC328::ErrorNumber err = CameraC328::NoError;
+
+ err = cam.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, resol);
+ if (CameraC328::NoError == err) {
+ DM_fLN("[ OK ] : CameraC328::init");
+ } else {
+ DM_fLN("[FAIL] : CameraC328::init (Error=%02X)", (int)err);
+ }
+
+ fp_jpeg = fopen(strFile, "w");
+ err = cam.getJpegSnapshotPicture(cb_jpeg);
+ if (CameraC328::NoError == err) {
+ DM_fLN("[ OK ] : CameraC328::getJpegPreview");
+ } else {
+ DM_fLN("[FAIL] : CameraC328::getJpegPreview (Error=%02X)", (int)err);
+ }
+
+ fclose(fp_jpeg);
+}
+
+/**
+ * jpeg preview picture.
+ * param strFile: "/fs/file01.jpg"
+ * param resol : CameraC328::JpegResolution640x480, CameraC328::JpegResolution320x240
+ */
+void revJpeg_preview(char *strFile, CameraC328::JpegResolution resol) {
+ CameraC328::ErrorNumber err = CameraC328::NoError;
+ err = cam.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, resol);
+ if (CameraC328::NoError == err) {
+ DM_fLN("[ OK ] : CameraC328::init");
+ } else {
+ DM_fLN("[FAIL] : CameraC328::init (Error=%02X)", (int)err);
+ }
+
+ fp_jpeg = fopen(strFile, "w");
+
+ err = cam.getJpegPreviewPicture(cb_jpeg);
+ if (CameraC328::NoError == err) {
+ DM_fLN("[ OK ] : CameraC328::getJpegPreview");
+ } else {
+ DM_fLN("[FAIL] : CameraC328::getJpegPreview (Error=%02X)", (int)err);
+ }
+
+ fclose(fp_jpeg);
+}
+
+#endif // defined(USE_CAMERA)
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rev_Camera.h Tue Aug 11 16:30:37 2015 +0000 @@ -0,0 +1,25 @@ +/* +# coded by revival / uasonice (at) gmail.com +# DATE: 2015/08/09 / Sun Aug 9 23:55:31 KST 2015 +# +# DESCRIPTION: +# rev Camera utility + */ + +#ifndef __REV_CAMERA_H__ +#define __REV_CAMERA_H__ +#include "CameraC328.h" + + +extern CameraC328 cam; +extern CameraC328::JpegResolution camResul; + +void revSync(void) ; +void revUncompressed_snapshot(char *strFile) ; +void revUncompressed_preview(char *strFile) ; +void revJpeg_snapshot(char *strFile, CameraC328::JpegResolution resol) ; +void revJpeg_preview(char *strFile, CameraC328::JpegResolution resol) ; + +#endif // __REV_CAMERA_H__ + +
--- a/rev_Hcsr04.cpp Tue Aug 11 16:07:05 2015 +0000
+++ b/rev_Hcsr04.cpp Tue Aug 11 16:30:37 2015 +0000
@@ -17,20 +17,18 @@
#include "rev_Hcsr04.h"
-//HCSR04 sensor(D12, D11);
-extern HCSR04 sensor;
-
-int sum_dist[3];
-int avg_dist = 0;
-int index_dist = 0;
-long distance_cm = 0; //ryuhs74@20150810 - Add
#if defined(USE_MEASURE_DISTANCE)
-int get_distance(void)
+long avg_dist = 0;
+long distance_cm = 0; //ryuhs74@20150810 - Add
+uint8_t index_dist = 0;
+long sum_dist[3];
+
+int get_distance(HCSR04 *pH)
{
-
+
while (true) {
- distance_cm = sensor.distance(); //ryuhs74@20150810 - cm 단위 측정 거리 return
+ distance_cm = pH->distance(); //ryuhs74@20150810 - cm 단위 측정 거리 return
if( index_dist < 3){ //ryuhs74@20150810
sum_dist[index_dist] = distance_cm;
DM_fLN("sum_dist[%d] = %d", index_dist, sum_dist[index_dist]);
@@ -44,6 +42,7 @@
}
avg_dist /= 3;
+ DM_fLN("avg: %d", avg_dist);
return avg_dist;
}
#if 0
--- a/rev_Hcsr04.h Tue Aug 11 16:07:05 2015 +0000 +++ b/rev_Hcsr04.h Tue Aug 11 16:30:37 2015 +0000 @@ -13,9 +13,8 @@ #include "hcsr04.h" //ryuhs74@20150810 - Add -int get_distance(void); +int get_distance(HCSR04 *pH); #endif // __REV_HCSR04_H__ -
