Operacion X

Dependencies:   mbed ov7670 mycame imagetrlib FastPWM UniGraphic

Committer:
rickqw
Date:
Fri Nov 08 17:50:07 2019 +0000
Revision:
0:18fc17ecd705
proyecto manhattan

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rickqw 0:18fc17ecd705 1 #include "mbed.h"
rickqw 0:18fc17ecd705 2 //#include "global.h"
rickqw 0:18fc17ecd705 3 #include "FastPWM.h"
rickqw 0:18fc17ecd705 4 #include "imagetr.h"
rickqw 0:18fc17ecd705 5 #include "ov7670.h"
rickqw 0:18fc17ecd705 6 #include "ov7670sreg.h"
rickqw 0:18fc17ecd705 7 #include "ILI9341.h"
rickqw 0:18fc17ecd705 8 #include "SDFileSystem.h"
rickqw 0:18fc17ecd705 9 #include "Arial12x12.h"
rickqw 0:18fc17ecd705 10 #include "Arial24x23.h"
rickqw 0:18fc17ecd705 11 #include "Arial28x28.h"
rickqw 0:18fc17ecd705 12
rickqw 0:18fc17ecd705 13 // for the TFT
rickqw 0:18fc17ecd705 14 #define CSTFT PB_0
rickqw 0:18fc17ecd705 15 #define RESETTFT PC_1
rickqw 0:18fc17ecd705 16 #define RSTFT PA_4
rickqw 0:18fc17ecd705 17 #define WRTFT PA_1
rickqw 0:18fc17ecd705 18 #define RDTFT PA_0
rickqw 0:18fc17ecd705 19 #define PCLK PC_10 //camera Pixel clock
rickqw 0:18fc17ecd705 20 #define HREF PC_11 //camera Href
rickqw 0:18fc17ecd705 21 #define VSYNC PC_12 // camera Vsync
rickqw 0:18fc17ecd705 22 #define I2C_D PB_3 //Camera SCC3 port data
rickqw 0:18fc17ecd705 23 #define I2C_CLK PB_10 //Camera SCCB port clock /* IMPORTANT! pull up, SV->4.SKohm*/
rickqw 0:18fc17ecd705 24 #define RESET PB_12 // camera reset
rickqw 0:18fc17ecd705 25 #define XCLK PA_10 //camera system clock
rickqw 0:18fc17ecd705 26
rickqw 0:18fc17ecd705 27 #define mD0 PC_2 //camera Data
rickqw 0:18fc17ecd705 28 #define mD1 PC_3
rickqw 0:18fc17ecd705 29 #define mD2 PC_4
rickqw 0:18fc17ecd705 30 #define mD3 PC_5
rickqw 0:18fc17ecd705 31 #define mD4 PC_6
rickqw 0:18fc17ecd705 32 #define mD5 PC_7
rickqw 0:18fc17ecd705 33 #define mD6 PC_8
rickqw 0:18fc17ecd705 34 #define mD7 PC_9
rickqw 0:18fc17ecd705 35
rickqw 0:18fc17ecd705 36 #define SCSD PB_13 //clk SD
rickqw 0:18fc17ecd705 37 #define MISD PB_14 //miso SD
rickqw 0:18fc17ecd705 38 #define MOSD PB_15 // mosi SD
rickqw 0:18fc17ecd705 39
rickqw 0:18fc17ecd705 40 // to check his use
rickqw 0:18fc17ecd705 41 #define PD2 PD_2/: CS SD
rickqw 0:18fc17ecd705 42 #define QQVGA 19200 //150 *120
rickqw 0:18fc17ecd705 43 /*GLOBAL INSTANCES*/
rickqw 0:18fc17ecd705 44 DigitalOut myled(LED1);
rickqw 0:18fc17ecd705 45 InterruptIn my_button (USER_BUTTON);
rickqw 0:18fc17ecd705 46
rickqw 0:18fc17ecd705 47 //communication serial
rickqw 0:18fc17ecd705 48 Serial pc(USBTX, USBRX);//tx, rx
rickqw 0:18fc17ecd705 49 // bluetooth communication
rickqw 0:18fc17ecd705 50 Serial bluetooth(PA_0, PA_1); // tx, nx
rickqw 0:18fc17ecd705 51
rickqw 0:18fc17ecd705 52 PinName buspins[8]={D11, D10, D8, D7, D5, D4, PB_2, PA_12};
rickqw 0:18fc17ecd705 53 //
rickqw 0:18fc17ecd705 54 ILI9341 TFT(BUS_8, buspins, PB_0, PC_1, PA_4, PA_5, PA_6, "TFT", 240, 320);
rickqw 0:18fc17ecd705 55 //camera
rickqw 0:18fc17ecd705 56 int mask =0x1FFC;
rickqw 0:18fc17ecd705 57 OV7670_OV7670(I2C_D,I2C_CLK,XCLK, PortC, mask, RESET);
rickqw 0:18fc17ecd705 58 //mosi, miso, sclk, cs
rickqw 0:18fc17ecd705 59 SDFileSystem sd(MOSD, MISD, SCSD, PB_1, "sd");
rickqw 0:18fc17ecd705 60 /*GLOBAL VARIABLES*/
rickqw 0:18fc17ecd705 61 Timer Time;
rickqw 0:18fc17ecd705 62 char desfile[25];
rickqw 0:18fc17ecd705 63 char patfile[25];
rickqw 0:18fc17ecd705 64 char filename[25];
rickqw 0:18fc17ecd705 65 const int tmarray=nc*2*nl;
rickqw 0:18fc17ecd705 66 unsigned char bank[tmarray];
rickqw 0:18fc17ecd705 67 unsigned char bankt[nl][nc];
rickqw 0:18fc17ecd705 68 unsigned char bankta[nlta][ncta][nv];
rickqw 0:18fc17ecd705 69 unsigned char banktatc[nlta][ncta];
rickqw 0:18fc17ecd705 70 unsigned char bankf[tmarray];
rickqw 0:18fc17ecd705 71 unsigned char banktc[nl][nc];
rickqw 0:18fc17ecd705 72
rickqw 0:18fc17ecd705 73 float meas0,measold0,meas1,measold1,meas2,measold2,meas3,measold3;
rickqw 0:18fc17ecd705 74
rickqw 0:18fc17ecd705 75 int volatile statc = 0;
rickqw 0:18fc17ecd705 76 bool volatile captur = false;
rickqw 0:18fc17ecd705 77 FILE *fp;
rickqw 0:18fc17ecd705 78
rickqw 0:18fc17ecd705 79 void pressed()
rickqw 0:18fc17ecd705 80 {
rickqw 0:18fc17ecd705 81 wait(0.1);
rickqw 0:18fc17ecd705 82 if(my_button == 0) {
rickqw 0:18fc17ecd705 83 if(statc == 0) {
rickqw 0:18fc17ecd705 84 //pc.printf("capture requested\r\n");
rickqw 0:18fc17ecd705 85 captur = true;
rickqw 0:18fc17ecd705 86 TFT.foreground(Red);
rickqw 0:18fc17ecd705 87 TFT.locate(0,0);
rickqw 0:18fc17ecd705 88 }
rickqw 0:18fc17ecd705 89 if(statc == 1){
rickqw 0:18fc17ecd705 90 fp = fope(desfile,"r");
rickqw 0:18fc17ecd705 91 for(int =0;i<tmarray;i++)
rickqw 0:18fc17ecd705 92 {
rickqw 0:18fc17ecd705 93 bankf[i] = fgetc(fp);
rickqw 0:18fc17ecd705 94 bluetooth.putc(bankf[i]);
rickqw 0:18fc17ecd705 95 wait_ms(1);
rickqw 0:18fc17ecd705 96 }
rickqw 0:18fc17ecd705 97 fclose(fp);
rickqw 0:18fc17ecd705 98 }
rickqw 0:18fc17ecd705 99 if(statc == 2) {
rickqw 0:18fc17ecd705 100 statc=0;
rickqw 0:18fc17ecd705 101 }else{
rickqw 0:18fc17ecd705 102 statc=statc+1;
rickqw 0:18fc17ecd705 103 }
rickqw 0:18fc17ecd705 104 }
rickqw 0:18fc17ecd705 105 }
rickqw 0:18fc17ecd705 106
rickqw 0:18fc17ecd705 107 void capturecycle(const char des[])
rickqw 0:18fc17ecd705 108 {
rickqw 0:18fc17ecd705 109 strcpy(desfile,des);
rickqw 0:18fc17ecd705 110 if(statc == 0||statc == 1) {
rickqw 0:18fc17ecd705 111 pc.printf("one entry\n");
rickqw 0:18fc17ecd705 112 _OV7670.exrgbf(0);
rickqw 0:18fc17ecd705 113 TFT.Bitmap(0,120,160,120,bankf);
rickqw 0:18fc17ecd705 114 _OV7670.exrgbf(1);
rickqw 0:18fc17ecd705 115 TFT.Bitmap(160,120,160,120,bankf);
rickqw 0:18fc17ecd705 116 _OV7670.exrgbf(2);
rickqw 0:18fc17ecd705 117 TFT.Bitmap(0,0,160,120,bankf);
rickqw 0:18fc17ecd705 118 _OV7670.exrgbf(3);
rickqw 0:18fc17ecd705 119 TFT.Bitmap(1600,0,160,120,bankf);
rickqw 0:18fc17ecd705 120 }if(statc==2){
rickqw 0:18fc17ecd705 121 pc.printf("two entry\n");
rickqw 0:18fc17ecd705 122 _OV7670.CaptureNext();
rickqw 0:18fc17ecd705 123 TFT.fillrect(0,120,160,240,Green);
rickqw 0:18fc17ecd705 124 TFT.fillrect(160,0,320,120,Green);
rickqw 0:18fc17ecd705 125 TFT.foreground(Yellow);
rickqw 0:18fc17ecd705 126
rickqw 0:18fc17ecd705 127 TFT.Bitmap(0,0,160,120,bank);
rickqw 0:18fc17ecd705 128 TFT.Bitmap(160,120,160,120,bankf);
rickqw 0:18fc17ecd705 129 }
rickqw 0:18fc17ecd705 130 }
rickqw 0:18fc17ecd705 131
rickqw 0:18fc17ecd705 132 void just_send_and_display(const char des[]){
rickqw 0:18fc17ecd705 133
rickqw 0:18fc17ecd705 134 strcoy(desfile,des);
rickqw 0:18fc17ecd705 135 fo = fopen(desfile,"r");
rickqw 0:18fc17ecd705 136 for(int i =0;i<tmarray;i++)
rickqw 0:18fc17ecd705 137 {
rickqw 0:18fc17ecd705 138 bankf[i] = fgetc(fp);
rickqw 0:18fc17ecd705 139 bluetooth.putc(bank[i]);
rickqw 0:18fc17ecd705 140 wait_ms(1);
rickqw 0:18fc17ecd705 141 }
rickqw 0:18fc17ecd705 142 fclose(fp);
rickqw 0:18fc17ecd705 143 TFT.Bitmap(0,0,160,120,bankf);
rickqw 0:18fc17ecd705 144 }
rickqw 0:18fc17ecd705 145
rickqw 0:18fc17ecd705 146 int main(){
rickqw 0:18fc17ecd705 147
rickqw 0:18fc17ecd705 148 myled_0;
rickqw 0:18fc17ecd705 149 statc=0;
rickqw 0:18fc17ecd705 150 //prepare the TFT
rickqw 0:18fc17ecd705 151 TFT.claim(stdout);
rickqw 0:18fc17ecd705 152 TFT.background(Black); // Set background to black
rickqw 0:18fc17ecd705 153 TFT.foreground(White); //Set chars to white
rickqw 0:18fc17ecd705 154 TFT.cls();//Clear the screen
rickqw 0:18fc17ecd705 155
rickqw 0:18fc17ecd705 156
rickqw 0:18fc17ecd705 157
rickqw 0:18fc17ecd705 158 TFT.set_font((unsigned char*)Arial 12x12); // Select the font
rickqw 0:18fc17ecd705 159 TFT.set_orientation(1); //Select orientation
rickqw 0:18fc17ecd705 160 TFT.locate(0,0);
rickqw 0:18fc17ecd705 161
rickqw 0:18fc17ecd705 162 _OV7670.Reset();
rickqw 0:18fc17ecd705 163 _OV7670.Init("RGB", QQVGA);
rickqw 0:18fc17ecd705 164 pc.printf("Hello World \r\n");
rickqw 0:18fc17ecd705 165 my_button.fail(&pressed);
rickqw 0:18fc17ecd705 166 bluetooth.baud(115200);
rickqw 0:18fc17ecd705 167 wait_ms(10000);
rickqw 0:18fc17ecd705 168 while(1){
rickqw 0:18fc17ecd705 169 capturecycle("/sd/picture.txt");
rickqw 0:18fc17ecd705 170 }
rickqw 0:18fc17ecd705 171 }