Operacion X

Dependencies:   mbed ov7670 mycame imagetrlib FastPWM UniGraphic

main.cpp

Committer:
rickqw
Date:
2019-11-08
Revision:
0:18fc17ecd705

File content as of revision 0:18fc17ecd705:

#include "mbed.h"
//#include "global.h"
#include "FastPWM.h"
#include "imagetr.h"
#include "ov7670.h"
#include "ov7670sreg.h"
#include "ILI9341.h"
#include "SDFileSystem.h"
#include "Arial12x12.h"
#include "Arial24x23.h"
#include "Arial28x28.h"

// for the TFT
#define CSTFT PB_0 
#define RESETTFT PC_1
#define RSTFT PA_4
#define WRTFT PA_1
#define RDTFT PA_0
#define PCLK PC_10 //camera Pixel clock
#define HREF PC_11 //camera Href
#define VSYNC PC_12 // camera Vsync
#define I2C_D PB_3 //Camera SCC3 port data
#define I2C_CLK PB_10 //Camera SCCB port clock /* IMPORTANT! pull up, SV->4.SKohm*/
#define RESET PB_12 // camera reset
#define XCLK PA_10 //camera system clock

#define mD0 PC_2 //camera Data
#define mD1 PC_3
#define mD2 PC_4
#define mD3 PC_5
#define mD4 PC_6
#define mD5 PC_7
#define mD6 PC_8
#define mD7 PC_9

#define SCSD PB_13 //clk SD
#define MISD PB_14 //miso SD
#define MOSD PB_15 // mosi SD

// to check his use
#define PD2 PD_2/: CS SD
#define QQVGA 19200 //150 *120
/*GLOBAL INSTANCES*/
DigitalOut myled(LED1);
InterruptIn my_button (USER_BUTTON);

//communication serial
Serial pc(USBTX, USBRX);//tx, rx
// bluetooth communication
Serial bluetooth(PA_0, PA_1); // tx, nx

PinName buspins[8]={D11, D10, D8, D7, D5, D4, PB_2, PA_12};
//
ILI9341 TFT(BUS_8, buspins, PB_0, PC_1, PA_4, PA_5, PA_6, "TFT", 240, 320);
//camera
int mask =0x1FFC;
OV7670_OV7670(I2C_D,I2C_CLK,XCLK, PortC, mask, RESET);
//mosi, miso, sclk, cs
SDFileSystem sd(MOSD, MISD, SCSD, PB_1, "sd");
/*GLOBAL VARIABLES*/
Timer Time;
char desfile[25];
char patfile[25];
char filename[25];
const int tmarray=nc*2*nl;
unsigned char bank[tmarray];
unsigned char bankt[nl][nc];
unsigned char bankta[nlta][ncta][nv];
unsigned char banktatc[nlta][ncta];
unsigned char bankf[tmarray];
unsigned char banktc[nl][nc];

float meas0,measold0,meas1,measold1,meas2,measold2,meas3,measold3;

int volatile statc = 0;
bool volatile captur = false;
FILE *fp;

void pressed()
{
    wait(0.1);
    if(my_button == 0) {
        if(statc == 0) {
            //pc.printf("capture requested\r\n");
            captur = true;
            TFT.foreground(Red);
            TFT.locate(0,0);
        }
        if(statc == 1){
            fp = fope(desfile,"r");
            for(int =0;i<tmarray;i++)
            {
                bankf[i] = fgetc(fp);
                bluetooth.putc(bankf[i]);
                wait_ms(1);
            }
            fclose(fp);    
        }
        if(statc == 2) {
            statc=0;
        }else{
            statc=statc+1;
        }
    }
}

void capturecycle(const char des[])
{
    strcpy(desfile,des);
    if(statc == 0||statc == 1) {
        pc.printf("one entry\n");
        _OV7670.exrgbf(0);
        TFT.Bitmap(0,120,160,120,bankf);
        _OV7670.exrgbf(1);
        TFT.Bitmap(160,120,160,120,bankf);
        _OV7670.exrgbf(2);
        TFT.Bitmap(0,0,160,120,bankf);
        _OV7670.exrgbf(3);
        TFT.Bitmap(1600,0,160,120,bankf);
    }if(statc==2){
        pc.printf("two entry\n");
        _OV7670.CaptureNext();
        TFT.fillrect(0,120,160,240,Green);
        TFT.fillrect(160,0,320,120,Green);
        TFT.foreground(Yellow);
        
        TFT.Bitmap(0,0,160,120,bank);
        TFT.Bitmap(160,120,160,120,bankf);
    }
}

void just_send_and_display(const char des[]){
    
    strcoy(desfile,des);
    fo = fopen(desfile,"r");
    for(int i =0;i<tmarray;i++)
    {
        bankf[i] = fgetc(fp);
        bluetooth.putc(bank[i]);
        wait_ms(1);
    }
    fclose(fp);
    TFT.Bitmap(0,0,160,120,bankf);
}

int main(){
    
myled_0;
statc=0;
//prepare the TFT
TFT.claim(stdout);
TFT.background(Black); // Set background to black
TFT.foreground(White); //Set chars to white
TFT.cls();//Clear the screen



TFT.set_font((unsigned char*)Arial 12x12); // Select the font
TFT.set_orientation(1); //Select orientation
TFT.locate(0,0);

_OV7670.Reset();
_OV7670.Init("RGB", QQVGA);
pc.printf("Hello World \r\n");
my_button.fail(&pressed);
bluetooth.baud(115200);
wait_ms(10000);
while(1){
capturecycle("/sd/picture.txt");
}
}