bx-cam

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Committer:
backman
Date:
Tue Jul 08 06:21:37 2014 +0000
Revision:
8:025a9d74a731
Parent:
7:f990f03bc2b2
wang

Who changed what in which revision?

UserRevisionLine numberNew contents of line
emilmont 1:491820ee784d 1 #include "mbed.h"
emilmont 1:491820ee784d 2 #include "rtos.h"
backman 7:f990f03bc2b2 3 #include "main.h"
backman 7:f990f03bc2b2 4 #include "ov7670.h"
emilmont 1:491820ee784d 5
backman 7:f990f03bc2b2 6
backman 7:f990f03bc2b2 7
backman 7:f990f03bc2b2 8 /*
backman 7:f990f03bc2b2 9 OV7670(
backman 7:f990f03bc2b2 10 PinName sda, // Camera I2C port
backman 7:f990f03bc2b2 11 PinName scl, // Camera I2C port
backman 7:f990f03bc2b2 12 PinName vs, l8 aa // VS YNC
backman 7:f990f03bc2b2 13 PinName hr, // HREF
backman 7:f990f03bc2b2 14 PinName we, // WEN
backman 7:f990f03bc2b2 15
backman 7:f990f03bc2b2 16 PortName port, // 8bit bus port
backman 7:f990f03bc2b2 17 int mask, // 0b0000_0M65_4000_0321_L000_0000_0000_0000 = 0x07878000
backman 7:f990f03bc2b2 18
backman 7:f990f03bc2b2 19 PinName rt, // /RRST
backman 7:f990f03bc2b2 20 PinName o, // /OE
backman 7:f990f03bc2b2 21 PinName rc // RCLK
backman 7:f990f03bc2b2 22 );
backman 7:f990f03bc2b2 23
backman 7:f990f03bc2b2 24
backman 7:f990f03bc2b2 25 */
backman 7:f990f03bc2b2 26
backman 7:f990f03bc2b2 27
backman 8:025a9d74a731 28 //D7-D0
backman 8:025a9d74a731 29 OV7670 camera(PTE0,PTE1,PTD6,PTD7,PTE31,PTC17,PTC16,PTC13,PTC12,PTC6,PTC5,PTC4,PTC3,PTB8,PTB9,PTB10);
backman 7:f990f03bc2b2 30
backman 7:f990f03bc2b2 31
backman 7:f990f03bc2b2 32
backman 7:f990f03bc2b2 33
backman 7:f990f03bc2b2 34
backman 7:f990f03bc2b2 35
backman 7:f990f03bc2b2 36
backman 7:f990f03bc2b2 37
backman 7:f990f03bc2b2 38
backman 7:f990f03bc2b2 39 #define VGA 307200 //640*480
backman 7:f990f03bc2b2 40 #define QVGA 76800 //320*240
backman 7:f990f03bc2b2 41 #define QQVGA 19200 //160*120
backman 7:f990f03bc2b2 42
backman 8:025a9d74a731 43
backman 8:025a9d74a731 44 static int resolution =QQVGA ;
backman 8:025a9d74a731 45 // char in[160][120];
backman 7:f990f03bc2b2 46
backman 7:f990f03bc2b2 47 I2C i2c(PTE0, PTE1);
backman 7:f990f03bc2b2 48
backman 7:f990f03bc2b2 49
backman 7:f990f03bc2b2 50
backman 7:f990f03bc2b2 51 int main()
backman 7:f990f03bc2b2 52 {
backman 7:f990f03bc2b2 53 pc.baud(115200);
backman 8:025a9d74a731 54
backman 7:f990f03bc2b2 55 led4 = 0;
backman 7:f990f03bc2b2 56
backman 8:025a9d74a731 57
backman 7:f990f03bc2b2 58
backman 7:f990f03bc2b2 59
backman 8:025a9d74a731 60
backman 8:025a9d74a731 61
backman 8:025a9d74a731 62 if(camera.Init('b', QQVGA) != 1) // Set up for 160*120 pixels YUV (Only Y)
backman 7:f990f03bc2b2 63 {
backman 7:f990f03bc2b2 64 pc.printf("Init Fail\r\n");
backman 7:f990f03bc2b2 65 }
backman 7:f990f03bc2b2 66 pc.printf("Initializing done\r\n");
backman 8:025a9d74a731 67
backman 8:025a9d74a731 68
backman 8:025a9d74a731 69
backman 8:025a9d74a731 70 wait_ms(50);
backman 8:025a9d74a731 71
backman 8:025a9d74a731 72 //register
backman 8:025a9d74a731 73 int i = 0;
backman 7:f990f03bc2b2 74 pc.printf("AD : +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F");
backman 7:f990f03bc2b2 75 for (i=0;i<OV7670_REGMAX;i++)
backman 7:f990f03bc2b2 76 {
backman 7:f990f03bc2b2 77 int data;
backman 7:f990f03bc2b2 78 data = camera.ReadReg(i); // READ REG
backman 7:f990f03bc2b2 79 if ((i & 0x0F) == 0)
backman 7:f990f03bc2b2 80 {
backman 7:f990f03bc2b2 81 pc.printf("\r\n%02X : ",i);
backman 7:f990f03bc2b2 82 }
backman 7:f990f03bc2b2 83 pc.printf("%02X ",data);
backman 7:f990f03bc2b2 84 }
backman 7:f990f03bc2b2 85 pc.printf("\r\n");
backman 8:025a9d74a731 86
backman 8:025a9d74a731 87
backman 8:025a9d74a731 88 wait_ms(50);
backman 8:025a9d74a731 89
backman 8:025a9d74a731 90 CameraSnap();
backman 8:025a9d74a731 91
backman 8:025a9d74a731 92
backman 8:025a9d74a731 93
backman 8:025a9d74a731 94
emilmont 1:491820ee784d 95 }
backman 8:025a9d74a731 96
backman 7:f990f03bc2b2 97 void CameraSnap()
backman 7:f990f03bc2b2 98 {
backman 7:f990f03bc2b2 99 led4 = 1;
backman 8:025a9d74a731 100 // pc.printf("++++++++++++++++++++++++++++++");
backman 7:f990f03bc2b2 101 // Kick things off by capturing an image
backman 7:f990f03bc2b2 102 camera.CaptureNext();
backman 7:f990f03bc2b2 103 while(camera.CaptureDone() == false);
backman 7:f990f03bc2b2 104 // Start reading in the image data from the camera hardware buffer
backman 7:f990f03bc2b2 105 camera.ReadStart();
backman 8:025a9d74a731 106
backman 8:025a9d74a731 107 char max_in=0x00;
backman 8:025a9d74a731 108 char min_in=0xff;
backman 8:025a9d74a731 109
backman 8:025a9d74a731 110 /*
backman 8:025a9d74a731 111 for(int x = 0; x<120; x++)
backman 8:025a9d74a731 112 for(int y=0;y <160;y++){
backman 8:025a9d74a731 113 camera.ReadOnebyte();
backman 8:025a9d74a731 114
backman 8:025a9d74a731 115 in[x][y] = camera.ReadOnebyte();
backman 8:025a9d74a731 116
backman 8:025a9d74a731 117 if ( max_in <in[x][y])
backman 8:025a9d74a731 118 max_in = in[x][y];
backman 8:025a9d74a731 119
backman 8:025a9d74a731 120
backman 8:025a9d74a731 121 if(min_in > in[x][y])
backman 8:025a9d74a731 122 min_in=in[x][y];
backman 8:025a9d74a731 123
backman 8:025a9d74a731 124 }
backman 8:025a9d74a731 125
backman 8:025a9d74a731 126
backman 8:025a9d74a731 127 */
backman 8:025a9d74a731 128
backman 8:025a9d74a731 129
backman 8:025a9d74a731 130 for(int x = 0; x<120; x++){
backman 8:025a9d74a731 131 for(int y=0;y <160;y++)
backman 7:f990f03bc2b2 132 {
backman 7:f990f03bc2b2 133
backman 8:025a9d74a731 134
backman 8:025a9d74a731 135
backman 8:025a9d74a731 136
backman 8:025a9d74a731 137 camera.ReadOnebyte();
backman 8:025a9d74a731 138 // pc.printf("%1X " ,camera.ReadOnebyte());
backman 8:025a9d74a731 139
backman 8:025a9d74a731 140 if( camera.ReadOnebyte() > 0xe0 )
backman 8:025a9d74a731 141 pc.printf("e");
backman 8:025a9d74a731 142 else if( camera.ReadOnebyte() > 0xd0 )
backman 8:025a9d74a731 143 pc.printf("d");
backman 8:025a9d74a731 144 else if( camera.ReadOnebyte() > 0xc0 )
backman 8:025a9d74a731 145 pc.printf("c");
backman 8:025a9d74a731 146 else if( camera.ReadOnebyte() > 0xb0 )
backman 8:025a9d74a731 147 pc.printf("b");
backman 8:025a9d74a731 148 else if( camera.ReadOnebyte() > 0xa0 )
backman 8:025a9d74a731 149 pc.printf("a");
backman 8:025a9d74a731 150 else if( camera.ReadOnebyte() > 0x90 )
backman 8:025a9d74a731 151 pc.printf("9");
backman 8:025a9d74a731 152 else if( camera.ReadOnebyte() > 0x80 )
backman 8:025a9d74a731 153 pc.printf("8");
backman 8:025a9d74a731 154 else if( camera.ReadOnebyte() > 0x70 )
backman 8:025a9d74a731 155 pc.printf("7");
backman 8:025a9d74a731 156 else if( camera.ReadOnebyte() > 0x60 )
backman 8:025a9d74a731 157 pc.printf("6");
backman 8:025a9d74a731 158 else if( camera.ReadOnebyte() > 0x50 )
backman 8:025a9d74a731 159 pc.printf("5");
backman 8:025a9d74a731 160
backman 8:025a9d74a731 161 else if( camera.ReadOnebyte() > 0x40 )
backman 8:025a9d74a731 162 pc.printf("4");
backman 8:025a9d74a731 163 else if( camera.ReadOnebyte() > 0x30 )
backman 8:025a9d74a731 164 pc.printf("3");
backman 8:025a9d74a731 165 else if( camera.ReadOnebyte() > 0x20 )
backman 8:025a9d74a731 166 pc.printf("2");
backman 8:025a9d74a731 167 else
backman 8:025a9d74a731 168 pc.printf("1");
backman 8:025a9d74a731 169
backman 8:025a9d74a731 170
backman 8:025a9d74a731 171 // if( (max_in-in[x][y]) > (in[x][y]-min_in) )
backman 8:025a9d74a731 172 // pc.printf("X");
backman 8:025a9d74a731 173 // else
backman 8:025a9d74a731 174 // pc.printf(" ");
backman 8:025a9d74a731 175
backman 8:025a9d74a731 176
backman 8:025a9d74a731 177
backman 7:f990f03bc2b2 178
backman 7:f990f03bc2b2 179 }
backman 8:025a9d74a731 180 pc.printf("\r\n");
backman 8:025a9d74a731 181 }
backman 7:f990f03bc2b2 182 camera.ReadStop();
backman 7:f990f03bc2b2 183 camera.CaptureNext();
backman 7:f990f03bc2b2 184 while(camera.CaptureDone() == false);
backman 7:f990f03bc2b2 185
backman 8:025a9d74a731 186 pc.printf("\r\nSnap_done\r\n");
backman 7:f990f03bc2b2 187 led4 = 0;
emilmont 1:491820ee784d 188 }
backman 7:f990f03bc2b2 189
backman 7:f990f03bc2b2 190
backman 7:f990f03bc2b2 191