test protocole soufflerie Pid

Dependencies:   mbed LCD_DISCO_F746NG BSP_DISCO_F746NG Ecran MySerial

Committer:
schnf30
Date:
Sat Jun 11 11:28:02 2022 +0000
Revision:
0:33f813a53d44
test protocole soufflerie Pid

Who changed what in which revision?

UserRevisionLine numberNew contents of line
schnf30 0:33f813a53d44 1 #include "mbed.h"
schnf30 0:33f813a53d44 2 #include "MySerial.h"
schnf30 0:33f813a53d44 3 #include "ecran.h"
schnf30 0:33f813a53d44 4
schnf30 0:33f813a53d44 5 // variable soufflerie
schnf30 0:33f813a53d44 6 float ConsVitFluxAir; // consigne flux air
schnf30 0:33f813a53d44 7 float VitFluxAir; // vitesse de flux air
schnf30 0:33f813a53d44 8 float Frequencehelice;
schnf30 0:33f813a53d44 9 // coef correcteur PID
schnf30 0:33f813a53d44 10 float coefp,coefi,coefd;
schnf30 0:33f813a53d44 11 // interface PC attention baud 921600
schnf30 0:33f813a53d44 12 MySerial PC(USBTX,USBRX); // liaison PC
schnf30 0:33f813a53d44 13 char PCPhrase[maxdata]; // pour stocker phrase PC
schnf30 0:33f813a53d44 14 float presangle;
schnf30 0:33f813a53d44 15 volatile char EnvoiePC = 0; // INDIQUE DONNEE A ENVOYER EN PC ET CODE TRAME
schnf30 0:33f813a53d44 16 Ticker ticker;
schnf30 0:33f813a53d44 17 unsigned int Nb = 1;
schnf30 0:33f813a53d44 18 void Tenvoi(void)
schnf30 0:33f813a53d44 19 {
schnf30 0:33f813a53d44 20 EnvoiePC = 'V';
schnf30 0:33f813a53d44 21 }
schnf30 0:33f813a53d44 22
schnf30 0:33f813a53d44 23 DigitalOut led_green(LED1);
schnf30 0:33f813a53d44 24
schnf30 0:33f813a53d44 25
schnf30 0:33f813a53d44 26 Ticker tickermes;
schnf30 0:33f813a53d44 27 bool datachange = false;
schnf30 0:33f813a53d44 28 void mes(void)
schnf30 0:33f813a53d44 29 {
schnf30 0:33f813a53d44 30 datachange = true;
schnf30 0:33f813a53d44 31 VitFluxAir++; // vitesse de flux air
schnf30 0:33f813a53d44 32 if (VitFluxAir>70) VitFluxAir = 0;
schnf30 0:33f813a53d44 33 Frequencehelice++;
schnf30 0:33f813a53d44 34 if (Frequencehelice>180) Frequencehelice = 0;
schnf30 0:33f813a53d44 35 }
schnf30 0:33f813a53d44 36
schnf30 0:33f813a53d44 37
schnf30 0:33f813a53d44 38 int main()
schnf30 0:33f813a53d44 39 {
schnf30 0:33f813a53d44 40 coefp=0;
schnf30 0:33f813a53d44 41 coefi=0;
schnf30 0:33f813a53d44 42 coefd=100000;
schnf30 0:33f813a53d44 43 Frequencehelice = 100;
schnf30 0:33f813a53d44 44 ConsVitFluxAir = 57; // consigne flux air
schnf30 0:33f813a53d44 45 VitFluxAir =30;
schnf30 0:33f813a53d44 46 Ecran();
schnf30 0:33f813a53d44 47 ticker.attach(&Tenvoi,0.1); // demare ticker pour envoi trame toute les 100ms
schnf30 0:33f813a53d44 48 tickermes.attach(&mes,10); // demare ticker pour envoi trame toute les 100ms
schnf30 0:33f813a53d44 49 FirstEcran();
schnf30 0:33f813a53d44 50 while(1) {
schnf30 0:33f813a53d44 51
schnf30 0:33f813a53d44 52 // recevoir des donnees
schnf30 0:33f813a53d44 53 if (PC.dataready()) {
schnf30 0:33f813a53d44 54 strcpy(PCPhrase,PC.read());
schnf30 0:33f813a53d44 55 switch (PCPhrase[1]) {
schnf30 0:33f813a53d44 56 case 'B': // consigne de flux air
schnf30 0:33f813a53d44 57 ConsVitFluxAir = atof(PCPhrase+2);
schnf30 0:33f813a53d44 58 datachange=true;
schnf30 0:33f813a53d44 59 break;
schnf30 0:33f813a53d44 60 case 'L' : // param pid
schnf30 0:33f813a53d44 61 if (sscanf(PCPhrase,"$L,%f,%f,%f",&coefp,&coefi,&coefd)>=1) datachange=true;
schnf30 0:33f813a53d44 62 break;
schnf30 0:33f813a53d44 63 default :
schnf30 0:33f813a53d44 64 ;
schnf30 0:33f813a53d44 65 }
schnf30 0:33f813a53d44 66 }
schnf30 0:33f813a53d44 67 // envoie des data vers PC
schnf30 0:33f813a53d44 68 if (EnvoiePC!=0) {
schnf30 0:33f813a53d44 69 switch (EnvoiePC) {
schnf30 0:33f813a53d44 70 case 'V' : // angle mesure
schnf30 0:33f813a53d44 71 PC.printf("$V,%0.1f,%0.1f\r\n",VitFluxAir,Frequencehelice);
schnf30 0:33f813a53d44 72 EnvoiePC=0;
schnf30 0:33f813a53d44 73 break;
schnf30 0:33f813a53d44 74 default :
schnf30 0:33f813a53d44 75 EnvoiePC=0;
schnf30 0:33f813a53d44 76 }
schnf30 0:33f813a53d44 77 }
schnf30 0:33f813a53d44 78 if (datachange) {
schnf30 0:33f813a53d44 79 led_green = !led_green;
schnf30 0:33f813a53d44 80 Ecran();
schnf30 0:33f813a53d44 81 datachange = false;
schnf30 0:33f813a53d44 82 }
schnf30 0:33f813a53d44 83 }
schnf30 0:33f813a53d44 84 }
schnf30 0:33f813a53d44 85