7Robot_Freescale / Mbed 2 deprecated freescal_cup_k22f

Dependencies:   mbed freescal_cup_k22f

Dependents:   freescal_cup_k22f

source/Camera.cpp

Committer:
AlexandreN7
Date:
2015-01-17
Revision:
19:5e8260f3bdb2
Parent:
18:278f49df6df3
Child:
21:9430357e777c

File content as of revision 19:5e8260f3bdb2:

#include "mbed.h"
#include "Camera.h"

// les 2 cameras sont en parallèle
DigitalOut clk(PTE1); //clock camera
DigitalOut si(PTE0); // start camera

AnalogIn pix1(PTB2);//lecture camera1
AnalogIn pix2(PTB3);//lecture camera2



extern unsigned int pixel1[128]= {0}; //
extern unsigned int pixel2[128]= {0}; //

void readline(void) // fonction de détection de la ligne
{
    clk=0; // la clock est nulle au départ
    int compteur = 0,index_pixel = 0, capture_finie = 0;

    while (!capture_finie) {
        if (compteur & 1)    // si compteur impair => front descendant
            clk = 0;
        else                // compteur pair => montant
            clk = 1;
        if(compteur == 5)
            si = 1;

        if (compteur == 7)
            si=0;
        if ( (compteur & 1)  && compteur >= 7) {     // mesure sur front descendant,
            //   pc.printf("lecture pixel\n");
            pixel1[index_pixel]=pix1.read_u16();
            pixel2[index_pixel]=pix2.read_u16();
            index_pixel ++;
        }
        wait_us(10);
        compteur++;

        if (index_pixel == 128)
            capture_finie = 1;
    }
    wait_ms(1);
}

void passebas(int ordre)
{

    unsigned int tamponpixel1[256] = {0};
    unsigned int tamponpixel2[256] = {0};
    int i=0;
    
    // Passe bas en partant de la gauche sur tamponpixel[0:127]
    // et de la droite sur tamponpixel[128:255]
    for (i=ordre; i<128; i++) {
        for (int a=0; a<=ordre; a++) {
            tamponpixel1[i]+=pixel1[i-a];
            tamponpixel1[255-i]+=pixel1[127-i+a];
            tamponpixel2[i]+=pixel2[i-a];
            tamponpixel2[255-i]+=pixel2[127-i+a];            
            
        }
        tamponpixel1[i]/=(ordre+1);
        tamponpixel1[255-i]/=(ordre+1);
        tamponpixel2[i]/=(ordre+1);
        tamponpixel2[255-i]/=(ordre+1);
    }

    // Prolongement par continuité à gauche et à droite
    for (i=0; i<ordre; i++) {
        tamponpixel1[i]=tamponpixel1[ordre];
        tamponpixel1[255-i]=tamponpixel1[255-ordre]; 
        tamponpixel2[i]=tamponpixel2[ordre];
        tamponpixel2[255-i]=tamponpixel2[255-ordre];         
    }

    // Actualisation de l'image filtrée
    for (i=0;i<128;i++)
    {
        pixel1[i]=(tamponpixel1[i]+tamponpixel1[127+i])/2;
        pixel2[i]=(tamponpixel2[i]+tamponpixel2[127+i])/2;
    }
}

//fonction qui dérive le signal de la camera
void derivation()
{
    unsigned int tamponpixel1[128] = {0};
    unsigned int tamponpixel2[128] = {0};
    
    for (int i=1; i<128; i++) {
        tamponpixel1[i]=(pixel1[i]-pixel1[i-1]);
        tamponpixel2[i]=(pixel2[i]-pixel2[i-1]);
    }
    tamponpixel1[0]=tamponpixel1[1];
    tamponpixel2[0]=tamponpixel2[1];

    // Actualisation de l'image filtrée
    for (int i=0; i<128; i++) {
        pixel1[i]=tamponpixel1[i];
        pixel2[i]=tamponpixel2[i];
    }

}