BaseJpegDeocde exampe program

Dependencies:   BaseJpegDecode Terminal BaseUsbHost mbed mbed-rtos

Fork of BaseJpegDecode by Norimasa Okamoto

Revision:
2:697ebeb8336f
Parent:
0:7121d9fb45f4
Child:
3:2709bbf8baae
--- a/example1_c270.cpp	Mon Oct 08 11:38:57 2012 +0000
+++ b/example1_c270.cpp	Mon Oct 22 14:10:04 2012 +0000
@@ -1,7 +1,11 @@
 #if 1
+//
+// simple color tracking
+//
 #include "mbed.h"
 #include "BaseJpegDecode.h"
 #include "uvc.h"
+#include "Terminal.h"
 
 // Logitech C270
 #define WIDTH  320
@@ -10,7 +14,7 @@
 #define ASSERT(A) while(!(A)){fprintf(stderr,"\n\n%s@%d %s ASSERT!\n\n",__PRETTY_FUNCTION__,__LINE__,#A);exit(1);};
 
 DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
-Serial pc(USBTX, USBRX);
+Terminal term(USBTX, USBRX);
 
 class CalcCenter : public BaseJpegDecode {
 public:
@@ -23,7 +27,7 @@
         }
         if (block == 3) { // 0-1:Y 2:Cb 3:Cr
             m_buf[mcu] = value; // debug
-            if (value >= 2) { // red
+            if (value >= 3) { // red
                 m_x_sum += value*(mcu%(WIDTH/16));
                 m_y_sum += value*(mcu/(WIDTH/16));
                 m_sum += value;
@@ -56,8 +60,8 @@
 }
 
 int main() {
-    pc.baud(921600);
-    printf("%s\n", __FILE__);
+    term.baud(921600);
+    term.printf("%s\n", __FILE__);
 
     calc = new CalcCenter;
     ASSERT(calc);
@@ -67,16 +71,29 @@
     cam->SetFrameInterval(2000000); // 5.0fps
     cam->setOnResult(callback_motion_jpeg);
     ASSERT(cam->setup() >= 0);
+    term.cls();
+    int fg, old_fg = 0xffffff;
     while(1) {
-        printf("\n"); // start debug dump
-        for(int y = 0; y < HEIGHT/8; y++) {
+        int y;
+        for(y = 0; y < HEIGHT/8; y++) {
+            term.locate(0, y);
             for(int x = 0; x < WIDTH/16; x++) {
-                printf("%+3d,", calc->m_buf[y*WIDTH/16+x]);
+                int value = calc->m_buf[y*WIDTH/16+x];
+                if (value >= 3) {
+                    fg = 0xff0000; // red
+                } else {
+                    fg = 0xffffff; // white
+                }
+                if (fg != old_fg) {
+                    term.foreground(fg);
+                    old_fg = fg;
+                }
+                term.printf("%+3d,", value);
                 cam->poll();
             }
-            printf("\n");
         }
-        printf("red:(%d,%d)\n", calc->x_center, calc->y_center);
+        term.locate(0, y);
+        term.printf("Cr:(%d,%d)", calc->x_center, calc->y_center);
         cam->wait_ms(500);
         led3 = !led3;
     }