mm

Dependencies:   CMPS03 SRF05 mbed pixy

main.cpp

Committer:
pirottealex
Date:
2018-02-08
Revision:
0:6c5fac591b01

File content as of revision 0:6c5fac591b01:

#include "mbed.h"
#include "fct.h"
#include "Pixy.h"
#include "PixyLink.h"
#include "SRF05.h"
#include <CMPS03.h>
#define TIC_POSITION 0.0005
#define PERIOD_SERVO 0.01999

Serial pc (USBTX,USBRX);
//DigitalOut Servo(p21);
SPI spi(p5, p6, p7); // mosi, miso, sclk
DigitalOut cs(p13);
//Ticker tic1;
//Timer t_servo;
//int POSITION=50;
/*void servo_position( void)
{
    float t = t_servo.read();
    if(t>=PERIOD_SERVO) 
    {
        t_servo.reset();
    }
    if(t>=0.001+(POSITION /100000.0)) 
    {
        Servo.write(0);
    } 
    else 
    {
        Servo.write(1);
    }
}*/

void mafct(void);
int main()
{
    cs.write(1);                //initialisation de CS à ‘1’
    spi.format(16,0);       //communication sur 16 bits / mode 0
    spi.frequency(100000); //fréquence de 1MHz
    init();
    //Pixy pixy= Pixy(p28,p27);
    //pixy.setSerialOutput(&pc);
    mafct();
    pc.baud(9600);
    pc.printf("alive");
    etat=1;
    for(int j=0; j<50;j++)
    {
        mafct();
    }
    vitmoteur(0,0);
    /*t_servo.start();
    tic1.attach(&servo_position,TIC_POSITION);*/
    while(1) {
        mafct();
        /*lecture_blanc();    // recupere valeurs capteurs ligne blanche
        lecture_us();   // recupere valeurs capteurs us
        lecture_boussole(); //gBoussole
        bout=bp.read();
        lecture_an();*/
        
       /* blocks = pixy.getBlocks();
        //pc.printf("etat=%d\n\r",etat);
        //pc.printf("etat=%d,capt1= %d, capt2= %d, us_ar=%f, bp=%d, boussole=%f\n\r",etat,captL1,captL3,us_arriere,bp.read(),gBoussole);
        if (blocks) {
            taille=pixy.blocks[j].width*pixy.blocks[j].height;
            errorX = (160-pixy.blocks[j].x);
            //pc.printf("taille=%f,sig: %d x: %d y: %d width: %d height: %d\n\r",taille, pixy.blocks[j].signature, pixy.blocks[j].x, pixy.blocks[j].y, pixy.blocks[j].width, pixy.blocks[j].height);
            //pc.printf("OK");
        }*/
        //pc.printf("error=%0.2f  us arriere : %0.2f capt_av=%0.2f capt_balle=%d distance_av=%0.2f cap1:%d  cap2:%d  boussole:%0.2f   bout:%d\n\r",errorX, us_arriere,capt_av,capt_balle,distance_av, captL1,captL3,gBoussole,bout);
        //pc.printf("%d\n\r",capt_balle);
        //vitmoteur(V_moy+K*errorX,V_moy-K*errorX);
/*        if(capt_av<4)
        {
            POSITION=-35;
        }
        else
        {
            POSITION=100;
        }*/
        //vitmoteur(0,0);


    }
}

void mafct(void)
{
    cs.write(0);  
    wait(0.01);              //CS à ‘0’ <-> activation du circuit
    unsigned int valeur = spi.write(0x00); //Lecture de la valeur en
//écrivant n’importe
//quoi...
    valeur = (valeur>>1)&0x0FFF;           //Mise en forme des deux
//bits lus et décalage de
//1bits pour ne pas tenir
//compte du deuxième B1
    pc.printf("valeur lue = %d\n\r", valeur); //Affichage sur la
//console
    cs.write(1);                     //CS à ‘1’ <-> désactivation
    wait(0.01);
}