test protocole soufflerie Pid
Dependencies: mbed LCD_DISCO_F746NG BSP_DISCO_F746NG Ecran MySerial
main.cpp
- Committer:
- schnf30
- Date:
- 23 months ago
- Revision:
- 0:33f813a53d44
File content as of revision 0:33f813a53d44:
#include "mbed.h" #include "MySerial.h" #include "ecran.h" // variable soufflerie float ConsVitFluxAir; // consigne flux air float VitFluxAir; // vitesse de flux air float Frequencehelice; // coef correcteur PID float coefp,coefi,coefd; // interface PC attention baud 921600 MySerial PC(USBTX,USBRX); // liaison PC char PCPhrase[maxdata]; // pour stocker phrase PC float presangle; volatile char EnvoiePC = 0; // INDIQUE DONNEE A ENVOYER EN PC ET CODE TRAME Ticker ticker; unsigned int Nb = 1; void Tenvoi(void) { EnvoiePC = 'V'; } DigitalOut led_green(LED1); Ticker tickermes; bool datachange = false; void mes(void) { datachange = true; VitFluxAir++; // vitesse de flux air if (VitFluxAir>70) VitFluxAir = 0; Frequencehelice++; if (Frequencehelice>180) Frequencehelice = 0; } int main() { coefp=0; coefi=0; coefd=100000; Frequencehelice = 100; ConsVitFluxAir = 57; // consigne flux air VitFluxAir =30; Ecran(); ticker.attach(&Tenvoi,0.1); // demare ticker pour envoi trame toute les 100ms tickermes.attach(&mes,10); // demare ticker pour envoi trame toute les 100ms FirstEcran(); while(1) { // recevoir des donnees if (PC.dataready()) { strcpy(PCPhrase,PC.read()); switch (PCPhrase[1]) { case 'B': // consigne de flux air ConsVitFluxAir = atof(PCPhrase+2); datachange=true; break; case 'L' : // param pid if (sscanf(PCPhrase,"$L,%f,%f,%f",&coefp,&coefi,&coefd)>=1) datachange=true; break; default : ; } } // envoie des data vers PC if (EnvoiePC!=0) { switch (EnvoiePC) { case 'V' : // angle mesure PC.printf("$V,%0.1f,%0.1f\r\n",VitFluxAir,Frequencehelice); EnvoiePC=0; break; default : EnvoiePC=0; } } if (datachange) { led_green = !led_green; Ecran(); datachange = false; } } }