HOme Sheriff And Lamp

Dependencies:   CameraC328 HCSR04 SDFileSystem WIZnetInterface mbed

Fork of HoSAL by pi bae

Files at this revision

API Documentation at this revision

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

CameraC328.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
rev_Camera.cpp Show annotated file Show diff for this revision Revisions of this file
rev_Camera.h Show annotated file Show diff for this revision Revisions of this file
rev_Hcsr04.cpp Show annotated file Show diff for this revision Revisions of this file
rev_Hcsr04.h Show annotated file Show diff for this revision Revisions of this file
--- /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__
 
 
-