Operacion X

Dependencies:   mbed ov7670 mycame imagetrlib FastPWM UniGraphic

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 //#include "global.h"
00003 #include "FastPWM.h"
00004 #include "imagetr.h"
00005 #include "ov7670.h"
00006 #include "ov7670sreg.h"
00007 #include "ILI9341.h"
00008 #include "SDFileSystem.h"
00009 #include "Arial12x12.h"
00010 #include "Arial24x23.h"
00011 #include "Arial28x28.h"
00012 
00013 // for the TFT
00014 #define CSTFT PB_0 
00015 #define RESETTFT PC_1
00016 #define RSTFT PA_4
00017 #define WRTFT PA_1
00018 #define RDTFT PA_0
00019 #define PCLK PC_10 //camera Pixel clock
00020 #define HREF PC_11 //camera Href
00021 #define VSYNC PC_12 // camera Vsync
00022 #define I2C_D PB_3 //Camera SCC3 port data
00023 #define I2C_CLK PB_10 //Camera SCCB port clock /* IMPORTANT! pull up, SV->4.SKohm*/
00024 #define RESET PB_12 // camera reset
00025 #define XCLK PA_10 //camera system clock
00026 
00027 #define mD0 PC_2 //camera Data
00028 #define mD1 PC_3
00029 #define mD2 PC_4
00030 #define mD3 PC_5
00031 #define mD4 PC_6
00032 #define mD5 PC_7
00033 #define mD6 PC_8
00034 #define mD7 PC_9
00035 
00036 #define SCSD PB_13 //clk SD
00037 #define MISD PB_14 //miso SD
00038 #define MOSD PB_15 // mosi SD
00039 
00040 // to check his use
00041 #define PD2 PD_2/: CS SD
00042 #define QQVGA 19200 //150 *120
00043 /*GLOBAL INSTANCES*/
00044 DigitalOut myled(LED1);
00045 InterruptIn my_button (USER_BUTTON);
00046 
00047 //communication serial
00048 Serial pc(USBTX, USBRX);//tx, rx
00049 // bluetooth communication
00050 Serial bluetooth(PA_0, PA_1); // tx, nx
00051 
00052 PinName buspins[8]={D11, D10, D8, D7, D5, D4, PB_2, PA_12};
00053 //
00054 ILI9341 TFT(BUS_8, buspins, PB_0, PC_1, PA_4, PA_5, PA_6, "TFT", 240, 320);
00055 //camera
00056 int mask =0x1FFC;
00057 OV7670_OV7670(I2C_D,I2C_CLK,XCLK, PortC, mask, RESET);
00058 //mosi, miso, sclk, cs
00059 SDFileSystem sd(MOSD, MISD, SCSD, PB_1, "sd");
00060 /*GLOBAL VARIABLES*/
00061 Timer Time;
00062 char desfile[25];
00063 char patfile[25];
00064 char filename[25];
00065 const int tmarray=nc*2*nl;
00066 unsigned char bank[tmarray];
00067 unsigned char bankt[nl][nc];
00068 unsigned char bankta[nlta][ncta][nv];
00069 unsigned char banktatc[nlta][ncta];
00070 unsigned char bankf[tmarray];
00071 unsigned char banktc[nl][nc];
00072 
00073 float meas0,measold0,meas1,measold1,meas2,measold2,meas3,measold3;
00074 
00075 int volatile statc = 0;
00076 bool volatile captur = false;
00077 FILE *fp;
00078 
00079 void pressed()
00080 {
00081     wait(0.1);
00082     if(my_button == 0) {
00083         if(statc == 0) {
00084             //pc.printf("capture requested\r\n");
00085             captur = true;
00086             TFT.foreground(Red);
00087             TFT.locate(0,0);
00088         }
00089         if(statc == 1){
00090             fp = fope(desfile,"r");
00091             for(int =0;i<tmarray;i++)
00092             {
00093                 bankf[i] = fgetc(fp);
00094                 bluetooth.putc(bankf[i]);
00095                 wait_ms(1);
00096             }
00097             fclose(fp);    
00098         }
00099         if(statc == 2) {
00100             statc=0;
00101         }else{
00102             statc=statc+1;
00103         }
00104     }
00105 }
00106 
00107 void capturecycle(const char des[])
00108 {
00109     strcpy(desfile,des);
00110     if(statc == 0||statc == 1) {
00111         pc.printf("one entry\n");
00112         _OV7670.exrgbf(0);
00113         TFT.Bitmap(0,120,160,120,bankf);
00114         _OV7670.exrgbf(1);
00115         TFT.Bitmap(160,120,160,120,bankf);
00116         _OV7670.exrgbf(2);
00117         TFT.Bitmap(0,0,160,120,bankf);
00118         _OV7670.exrgbf(3);
00119         TFT.Bitmap(1600,0,160,120,bankf);
00120     }if(statc==2){
00121         pc.printf("two entry\n");
00122         _OV7670.CaptureNext();
00123         TFT.fillrect(0,120,160,240,Green);
00124         TFT.fillrect(160,0,320,120,Green);
00125         TFT.foreground(Yellow);
00126         
00127         TFT.Bitmap(0,0,160,120,bank);
00128         TFT.Bitmap(160,120,160,120,bankf);
00129     }
00130 }
00131 
00132 void just_send_and_display(const char des[]){
00133     
00134     strcoy(desfile,des);
00135     fo = fopen(desfile,"r");
00136     for(int i =0;i<tmarray;i++)
00137     {
00138         bankf[i] = fgetc(fp);
00139         bluetooth.putc(bank[i]);
00140         wait_ms(1);
00141     }
00142     fclose(fp);
00143     TFT.Bitmap(0,0,160,120,bankf);
00144 }
00145 
00146 int main(){
00147     
00148 myled_0;
00149 statc=0;
00150 //prepare the TFT
00151 TFT.claim(stdout);
00152 TFT.background(Black); // Set background to black
00153 TFT.foreground(White); //Set chars to white
00154 TFT.cls();//Clear the screen
00155 
00156 
00157 
00158 TFT.set_font((unsigned char*)Arial 12x12); // Select the font
00159 TFT.set_orientation(1); //Select orientation
00160 TFT.locate(0,0);
00161 
00162 _OV7670.Reset();
00163 _OV7670.Init("RGB", QQVGA);
00164 pc.printf("Hello World \r\n");
00165 my_button.fail(&pressed);
00166 bluetooth.baud(115200);
00167 wait_ms(10000);
00168 while(1){
00169 capturecycle("/sd/picture.txt");
00170 }
00171 }