Operacion X
Dependencies: mbed ov7670 mycame imagetrlib FastPWM UniGraphic
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 }
Generated on Sat Jul 16 2022 17:28:11 by
1.7.2