programme accordeur guitare valide

Dependencies:   mbed USBDevice

fonctions.cpp

Committer:
achille
Date:
2019-06-11
Revision:
2:86f6d5733ae7
Parent:
1:3f5287e5fa3c

File content as of revision 2:86f6d5733ae7:

#include "fonctions.h"


void led_set(int flagV, int flagR1,int flagR2)
{
    DigitalOut ledV(D13);
    DigitalOut ledR1(D12);
    DigitalOut ledR2(D11);

    if(flagV) {
        ledV=1;
    } else {
        ledV=0;
    }
    if(flagR1) {
        ledR1=1;
    } else {
        ledR1.write(0);
    }
    if(flagR2) {
        ledR2=1;
    } else {
        ledR2=0;
    }
}

void recup(volatile donnees *t, float time, int i){
     AnalogIn mic(A5);
     
     float v = mic.read();
     
     t[i].T=time;
     t[i].V=v;
     
     }
     
float moy(volatile donnees *t){
     float moy=0;
     for(int i=0;i<REC;i++){
         moy += t[i].V;
         }
    moy = moy/REC;
    
    return moy;
    }
    
float period(volatile donnees *t, float mo){
    int flagh=0,i=0;
    float t1,t2;
    if(t[i].V> mo ){
        flagh=1;
        while(flagh==1){
            if(t[i].V<mo){
                flagh=0;
                }
            else{
                i++;
                }
            }
        }
    while(flagh==0){
        if(t[i].V>mo){
            flagh=1;
            }
        else{
            i++;
            }
        }
    t1=t[i].T;
    while(flagh==1){
        if(t[i].V<mo){
            flagh=0;
            }
        else{
            i++;
            }
        }
    while(flagh==0){
        if(t[i].V>mo){
            flagh=1;
            }
        else{
            i++;
            }
        }
    t2=t[i].T;
    
    return t2-t1;
    }
    
float pvmax(donnees *t){
    float max=0,tt=0;
    int f1=0,f2=0;
    for(int i=0;i<REC;i++){
        if(t[i].V>max){
            max=t[i].V;
            }
        }
        int j=0;
        float t1=0,t2=0;
        while(f2==0){
            if((t[j].V>(max-(float)0.2))&&f1==0){
                t1=t[j].T;
                f1=1;
                }
            else{if((t[j].V>(max-(float)0.2))&&f2==0){
                t2=t[j].T;
                f2=1;
                }
            }
            j++;
        }
            tt=t2-t1;
           return tt;
    }
  
    
void affichage(float fIn,float fV, int *flagV, int *flagR1, int *flagR2){
    *flagV=0;
    *flagR1=0;
    *flagR2=0;
    if(fV-4<fIn && fIn<fV+4){
        *flagV=1;
        }
    else{
        if(fV-1>fIn){
            *flagR2=1;
            }
        else{
            if(fIn>fV+1){
                *flagR1=1;
                }
            }
        }
    }

float frequ(float fIn){
    DigitalOut MI1(D10);
    DigitalOut LA(D9);
    DigitalOut RE(D8);
    DigitalOut SOL(D7);
    DigitalOut SI(D6);
    DigitalOut MI2(D5);
    
    MI1=0;
    LA=0;
    RE=0;
    SOL=0;
    SI=0;
    MI2=0;    
    
    if(fIn<(float)96.2){
        MI1=1;
        return 82.4;
        }
    if(fIn>(float)96.2 && fIn<(float)128.4){
        LA=1;
        return 110;
        }
    if(fIn>(float)128.4 && fIn<(float)171.4){
        RE=1;
        return 146.8;
        }
    if(fIn>(float)171.4 && fIn<(float)221.45){
        SOL=1;
        return 196;
        }
    if(fIn>(float)221.45 && fIn<(float)288.25){
        SI=1;
        return 246.9;
        }
    if(fIn>(float)288.25){
        MI2=1;
        return 329.6;
        }
    else{
        MI1=1;
        LA=1;
        RE=1;
        SOL=1;
        SI=1;
        MI2=1;  
        return 0;
        }
    }