Prog Thib Ju

Dependencies:   mbed

main.cpp

Committer:
JulienB1
Date:
2019-05-02
Revision:
2:8817ad0d0a78
Parent:
1:7d94c1b86ad6
Child:
3:f56ec086a122

File content as of revision 2:8817ad0d0a78:

#include "mbed.h"
 
// Definition des variables : moteur
PwmOut moteur1(D10); 
PwmOut moteur2(D9);
DigitalOut Trig(D12);
InterruptIn reception(D8);

Serial pc(USBTX, USBRX);

Timer t2;

double rc;

// Definition des variables : codeur
InterruptIn ComptIncr(D7);

Timer t1;

float tps1;
float tps2;
float tps3;
float dt;
int a;
double v;
float dist;
float dist_securite;

// Definition des fonctions : moteur

void front_montant()
{
    t2.start();
}

void front_descendant()
{
    t2.stop();
    tps3=t2.read();
    dist=174.9*tps3;
 //   pc.printf("dist = %lf \r\n", dist);
    t2.reset();
  //  if (dist == 0.0000){ rc = 1;}
   /* if (dist<=v*2){ rc = 0;}
    if (dist<= v*3 && dist>v*2){ rc = 0.2;}
    if (dist<= v*4 && dist>v*3){ rc = 0.4;}
    if (dist<= v*5 && dist>v*4){ rc = 0.6;}
    if (dist<= v*6 && dist>v*5){ rc = 0.8;}
    if (dist >= v*6) { rc = 1; }*/
    //if (dist<= dist_securite){rc = rc-rc/200;}
    //if (dist> dist_securite){rc = rc+(rc+1)/200;}
    //if (dist<=0.1) {rc = 0;}
    rc= 1;
    moteur2.write(rc);
    
  //  pc.printf("RC = %lf \r\n", rc);
    
} 

// Definition des fonctions : codeur

void vitesse();

void vitesse(){
    if (a == 0){
        tps1 = t1.read(); 
        }
    a++;
    if (a == 8) {
        tps2 = t1.read();
        dt = tps2 - tps1;
        v = 0.0201056/dt; // (8/25)*2*pi*4.5 cm de rayon
       // pc.printf("v = %lf\n", v);
       // pc.printf("dt = %f\n", 1/dt);
        a = 0;
        dist_securite = 6*v;
        //printf("Vitesse = %f tours/s\n", 10/t.read());
    }  
}    

// Debut du main
int main() 
{
    
    
    // Initialisation Moteur
    t2.reset();
    reception.rise(&front_montant);
    reception.fall(&front_descendant);
    moteur1.period_ms(10);
    moteur2.period_ms(10);
    moteur1.write(0);
    moteur2.write(0);
    pc.baud(9600);
    
    // Initialisation Codeur
    a = 0;
    dt = 0;
    t1.start();

    ComptIncr.rise(&vitesse);
    
    // Debut du while
    while(1)
    {
        // Partie moteur
        Trig = 1;
        pc.printf("dist = %f \r\n", dist);
        pc.printf("RC = %lf \r\n", rc);
        pc.printf("v = %lf\n", v);

        wait(0.001);
        Trig =0 ; 
        wait(0.001);

    
        // Partie codeur
        //printf("Compteur = %d\n", a);
        //printf("Temps 1 = %f\n", tps1);
        //printf("Temps 2 = %f\n", tps2);
        //printf("Test temps 1 = %f\n", b);
    }
}