OV7670 + 23LC1024 + Bluetooth
Dependencies: FastPWM MODSERIAL mbed
main.cpp
- Committer:
- sampullman
- Date:
- 2013-07-22
- Revision:
- 0:f309a2b2f27b
- Child:
- 1:6e4d2cff76e8
File content as of revision 0:f309a2b2f27b:
#include "mbed.h" #include "OV7670.h" #include "FastPWM.h" #define SIZEX (160) #define SIZEY (120) #define SIZE 19200 OV7670 camera( p28, p27, // SDA,SCL(I2C / SCCB) p21, p22, p23, p24, // XCLK, PCLK, VSYNC, HREF Port0, 0x07878000); // D0-D7 -> P11-p18 Serial host(USBTX, USBRX); DigitalOut status(p20); unsigned char bank0[SIZE]; unsigned char *bank1 = (unsigned char *)(0x2007C000); int hexToInt(int i) { if(i >= '0' && i <= '9') return i - '0'; else if(i >= 'A' && i <= 'F') return i - 55; else return 0; } int getHexWord(Serial *ser) { int b1 = ser->getc(); int b2 = ser->getc(); return (hexToInt(b1) << 4) | hexToInt(b2); } void sendImage() { // Write the image to the serial host for (int i = 0; i < SIZE; i++) { while(!(host.writeable())) {} host.putc(bank0[i]); while(!(host.writeable())) {} host.putc(bank1[i]); } } int main() { host.baud(115200); // Initialize a 12Mhz XCLK for the camera camera.Init(); // Reset camera on power up camera.Reset(); // Set up for 160*120 pixels RGB565 camera.InitQQVGA(); char c; while(1) { if(host.readable()) { c = host.getc(); } else { continue; } if(c == 'r') { int reg = getHexWord(&host); host.printf("%d\n\r", camera.ReadReg(reg)); } else if(c == 'w') { int reg = getHexWord(&host); int val = getHexWord(&host); camera.WriteReg(reg, val); host.printf("%d\n\r", camera.ReadReg(reg)); } else if(c == 't') { camera.scopeTest(&host); } else if(c == 'c') { status = 1; int bytes = camera.captureImage(bank0, bank1); //host.printf("%d\n", bytes); sendImage(); status = 0; } } }