Test Acquis Cam2D

Dependencies:   OV7670 mbed

Revision:
0:05d03cca2089
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sat Feb 07 17:21:20 2015 +0000
@@ -0,0 +1,91 @@
+#include "mbed.h"
+#include "ov7670.h"
+
+
+#define I2C_D D15
+#define I2C_CLK D14
+#define VSYNC PTD5
+#define HREF PTD6
+#define WEN PTD7
+#define RRST PTC6
+#define OE PTC3
+#define RCLK PTA4
+#define D0 PTC5
+#define D1 PTC10
+#define D2 PTC7
+#define D3 PTC9
+#define D4 PTC8
+#define D5 PTA12
+#define D6 PTA13
+#define D7 PTA5
+
+#define SIZEX (160)
+#define SIZEY (120)
+
+
+DigitalOut led_red(LED_RED);
+OV7670 camera(I2C_D,I2C_CLK,VSYNC,HREF,WEN,D0,D1,D2,D3,D4,D5,D6,D7,RRST,OE,RCLK);
+Serial pc(USBTX,USBRX);
+
+int main()
+{
+    int i ;
+    
+    pc.printf("Camera resetting..\r\n") ;
+    camera.Reset() ;
+
+    pc.printf("Before Init...\r\n") ;    
+    pc.printf("Lecture Registres...\r\n") ;    
+    pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ;
+    for (i=0;i<OV7670_REGMAX;i++) {
+        int data ;
+        data = camera.ReadReg(i) ; // READ REG
+        if ((i & 0x0F) == 0) {
+            pc.printf("\r\n%02X : ",i) ;
+        }
+        pc.printf("%02X ",data) ;
+    }
+    
+    
+    pc.printf("\r\n") ;
+    camera.InitQQVGA() ;
+
+    pc.printf("After Init...\r\n") ;    
+    pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F") ;
+    for (i=0;i<OV7670_REGMAX;i++) {
+        int data ;
+        data = camera.ReadReg(i) ; // READ REG
+        if ((i & 0x0F) == 0) {
+            pc.printf("\r\n%02X : ",i) ;
+        }
+        pc.printf("%02X ",data) ;
+    }
+    pc.printf("\r\n") ;
+    
+    
+    // CAPTURE and SEND LOOP
+    while(1)
+    {
+        pc.printf("Hit Any Key to send RGBx160x120 Capture Data.\r\n") ;
+        while(!pc.readable()) ;
+        pc.getc() ;
+        camera.CaptureNext() ;
+        while(camera.CaptureDone() == false) ;
+        pc.printf("*\r\n") ;
+        camera.ReadStart() ;
+        i = 0 ;
+        for (int y = 0;y < SIZEY;y++) {
+            int r,g,b,d1,d2 ;
+            for (int x = 0;x < SIZEX;x++) {
+                d1 = camera.ReadOneByte() ; // upper nibble is XXX , lower nibble is B
+                d2 = camera.ReadOneByte() ; // upper nibble is G   , lower nibble is R
+                b = (d1 & 0x0F) ;
+                g = (d2 & 0xF0) >> 4 ;
+                r = (d2 & 0x0F) ;
+                pc.printf ("%1X%1X%1X",r,g,b) ;
+            }
+            pc.printf("\r\n") ;
+        }
+        camera.ReadStop() ;        
+    }
+}