SP1 vesr 3
Dependencies: Sht31 WifiEsp8266 PWM EADOG
main.cpp
- Committer:
- petit
- Date:
- 2021-06-08
- Revision:
- 0:45857c3d5769
File content as of revision 0:45857c3d5769:
#include "mbed.h" #include "EADOG.h" #include "Small_7.h" #include "pwm.h" #include "Fonts/ArialR12x14.h" #include "wifiesp8266.h" #include "Sht31.h" EADOG lcd(PC_12, PC_10, PA_1, PA_0, PA_4, DOGM128); // MOSI, SCL, Reset, A0, CS Sht31 capt(PB_9,PB_8); InterruptIn helice(PD_2); InterruptIn VoieA(PB_13); //interuption de la voie A port P DigitalIn VoieB(PA_10); //InterruptIn VoieB(PA_10); WifiEsp8266 Wifi(PA_11,PA_12); // WifiEsp8266(PinName Txd, PinName Rxd); DigitalOut Led(LED1); float VitesseAir = 0; //initialisation de la VitesseAir float Frequencehelice = 0; int Temperature = 0; int Humidite = 0; unsigned char ConsVitFluxAir =0; float FrequenceCalc = 0; bool NewFrequence = false; // mesure frequence helice Timer timer; void MesPeriode(void) { Led= 1; FrequenceCalc = timer.read(); timer.reset(); FrequenceCalc = 1.0/FrequenceCalc/2.0; NewFrequence = true; Led=0; } // codeur bool BoutonChange; unsigned char inc100(unsigned char _i) { if (_i<100) { _i++; BoutonChange = true; } return _i; } unsigned char dec0(unsigned char _i) { if (_i>0) { _i--; BoutonChange = true; } return _i; } void FrontMontantA(void) { if (VoieB.read()==0) ConsVitFluxAir=inc100(ConsVitFluxAir); else ConsVitFluxAir=dec0(ConsVitFluxAir); } void FrontDescA(void) //fond descene { if(VoieB.read()==1) ConsVitFluxAir=inc100(ConsVitFluxAir); //jai rmplacé 0'' else ConsVitFluxAir=dec0(ConsVitFluxAir); } // pour acquisition entree. bool acquerir = false; Ticker TickerAcq; void TraitAcq(void) { acquerir = true; } //drapeau pour indiquer nouvel affichage bool affichage = false; int main() { Serial PC(USBTX,USBRX); PC.baud(Baud); PC.printf("SP1 start\r\n"); AnalogIn EntVitesseAir(PC_5); //pour faire varier VitesseAir char WifiPhrase[maxdata]; Led =1; // mesure frequence helice timer.reset(); timer.start(); // moteur pwm InitPwmMot(); // initilise PWM : voir lib T = 20ms, Largeur Imp 1ms // codeur ConsVitFluxAir = 0; BoutonChange = true; VoieA.fall(&FrontDescA); //frond descendant VoieA.rise(&FrontMontantA); //frond montant // ticker acquisition toutes les secondes lcd.locate(0,1); lcd.printf("Cons Vit Air");//on affiche la consigne lcd.locate(0,14); lcd.printf("Vitesse");//on affiche la vitesse lcd.locate(0,27); lcd.printf("Temperature");//on affiche la température lcd.locate(0,40); lcd.printf("Humidite");//on affiche l'humidité lcd.locate(0,53); lcd.printf("Freq. Helice");//on afiche la fréquence d'helice helice.rise(&MesPeriode); TickerAcq.attach(&TraitAcq,0.1); // ticker toutes les secondes pour lire vitesse flux air while (true) { // wifi if (Wifi.dataready()) { strcpy(WifiPhrase,Wifi.read()); PC.printf("%s\r\n",WifiPhrase); // pour phase de test switch (WifiPhrase[1]) { case 'F': ConsVitFluxAir=inc100(ConsVitFluxAir); Wifi.printf("$B%u\r\n",ConsVitFluxAir); lcd.locate(60,1); lcd.printf("%03u%%\r\n",ConsVitFluxAir);//on affiche la consigne break; case 'G' : ConsVitFluxAir=dec0(ConsVitFluxAir); Wifi.printf("$B%u\r\n",ConsVitFluxAir); lcd.locate(60,1); lcd.printf("%03u%%\r\n",ConsVitFluxAir);//on affiche la consigne break; default : ; } } if (NewFrequence==true) { Frequencehelice = FrequenceCalc; NewFrequence = false; } // acquisition des données toutes les secondes if (acquerir == true) { VitesseAir = EntVitesseAir.read(); VitesseAir = VitesseAir*(72.0*2.0*3.46/5.0);//Avec N, on peut trouver VitesseAir // hum et temperature Temperature = capt.readTemperature(); Humidite = capt.readHumidity(); Wifi.printf("$Z,%0.0f,%0i,%0i\r\n",VitesseAir,Temperature,Humidite); affichage = true; } if (BoutonChange==true) { SetPwmMot(ConsVitFluxAir); // on peut commande moteur 50% max -> 15ms BoutonChange = false; lcd.locate(60,1); lcd.printf("%03u%%\r\n",ConsVitFluxAir);//on affiche la consigne Wifi.printf("$B%u\r\n",ConsVitFluxAir); // wait(0.001); } if (affichage == true) { lcd.locate(50,14); lcd.printf("%03.0fkm/h",VitesseAir);//on affiche la vitesse lcd.locate(60,27); lcd.printf("%03iC\r\n",Temperature);//on affiche la température lcd.locate(60,40); lcd.printf("%03i%%\r\n",Humidite);//on affiche l'humidité lcd.locate(60,53); lcd.printf("%03.0fHz\r\n",Frequencehelice);//on afiche la fréquence d'helice affichage = false; } } }