Dependencies:   mbed

Revision:
0:e837a6fef44b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Mon Feb 27 16:22:19 2012 +0000
@@ -0,0 +1,55 @@
+#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);
+  }
+  
+
+    
+}