Dependencies:   mbed

main.cpp

Committer:
fabienlepoutre
Date:
2012-02-27
Revision:
0:e837a6fef44b

File content as of revision 0:e837a6fef44b:

#include "mbed.h"

DigitalOut myled(LED1);
AnalogIn entree(p20);
AnalogOut sortie(p18);

int main() {
    float integral =0;
    float previous_error =0;
    float error =0;
    float prev_sortie =0;
    float Kp = 2.72, Ki=2.61, Kd=0;
    int interval=2;
    float derivative = 0;
    float sortie_ns;
    myled = 0;
/*  printf("Entrer les parametres Kp : \r\n");
  scanf("%f", &Kp);
  printf("Ki : \r\n");
  scanf("%f", &Ki);
  printf("Kd: \r\n");
  scanf("%f", &Kd);
  printf("Periode d'echantillonnage (en ms) :\r\n");
  scanf("%d", &interval);*/
  printf("Debut du programme avec Ki = %f  et Kp = %f \n\r", Ki, Kp);
  float ana_test = entree.read()*3.3;
  printf("p20 = %f \n\r", ana_test);
  int i=0;
 while(1){ 
   // printf("In : \r\n");
   // scanf("%f", &error);
  /*  while(i<20){
        myled = 1;
        error = error + entree.read();
        i++;
        }
        i=0;
        myled=0;
    error = error/20.0;*/
  error = entree.read();

  integral = integral + (previous_error*interval);
  derivative = (error - previous_error)/interval;
  sortie_ns = prev_sortie + (Kp*error)-(Ki*previous_error)+(Kd*derivative);
  if(sortie_ns >1) sortie_ns =1;
  if(sortie_ns<0) sortie_ns=0;
  sortie = sortie_ns;
  prev_sortie = sortie_ns;;
  previous_error = error;
  wait_ms(interval);
  }
  

    
}