sp3
Dependencies: FT800_2 C12832 ADS1231 WifiEsp8266 LTC2309 affichage
main.cpp
00001 #include "mbed.h" 00002 #include "affichage.h" 00003 #include "ltc2309.h" 00004 #include "wifiesp8266.h" 00005 #include "constante.h" 00006 #include "ADS1231.h" 00007 00008 float FZ; 00009 float FX; 00010 float AngleIncMes; 00011 float AngleIncCons; 00012 float CH0; // PRESSION 00013 float CH1; 00014 float CH2; 00015 float CH3; 00016 float CH4; 00017 float CH5; 00018 float CH6; 00019 float CH7; 00020 AnalogIn potmesureangle(PC_2); // potentiometre dans l'aile 00021 DigitalOut MoteurIN1(PC_8); // rotation anti horaire (-20°) fil vert PB0 00022 DigitalOut MoteurIN2(PC_9); // rotation horaire (+20°) fil blanc PC1 00023 signed int comptage; 00024 DigitalIn VoieB(PA_1); 00025 InterruptIn VoieA(PB_0); 00026 char BoutonChange; 00027 DigitalOut AdsA0(_A0); 00028 DigitalOut AdsPwd(_Pwd); 00029 DigitalOut AdsTemp(_Temp); 00030 ADS1231 Ads1232 ( _Sclk, _Dout ); 00031 00032 ADS1231::ADS1231_status_t aux; 00033 ADS1231::Vector_count_t myData; 00034 ADS1231::Vector_mass_t myCalculatedMass; 00035 ADS1231::Vector_voltage_t myCalculatedVoltage; 00036 00037 /***********************************************************************************************************************/ 00038 /* Main function */ 00039 bool NewAffichage = true; 00040 bool Acquisition = false; 00041 RawSerial PC(USBTX, USBRX); 00042 WifiEsp8266 Wifi(PA_11,PA_12); // WifiEsp8266(PinName Txd, PinName Rxd); 00043 //float MesureAngle; // mesure du potentiometre dans l'aile 00044 //float ConsigneAngle; //= 0.47; // valeur entre 0,44 et 0,56 // consigne en pourcentage ou degré 00045 00046 Ticker EventAcq; 00047 00048 void FEventAcq() 00049 { 00050 Acquisition = true; 00051 } 00052 void FrontMontantA(void) 00053 { 00054 if (VoieB.read()==1) AngleIncCons = AngleIncCons + 1; 00055 else AngleIncCons = AngleIncCons - 1; 00056 BoutonChange++; 00057 } 00058 void FrontDescendantA(void) 00059 { 00060 if(VoieB.read()==0) AngleIncCons = AngleIncCons + 1; 00061 else AngleIncCons = AngleIncCons - 1; 00062 BoutonChange++; 00063 00064 } 00065 int main() 00066 { 00067 luminosite(128); 00068 LTC2309Init(); 00069 LTC2309Autozero(); 00070 char WifiPhrase[maxdata]; 00071 MoteurIN1.write(0); 00072 MoteurIN2.write(0); 00073 PC.baud(921600); 00074 PC.printf("Hello je suis SP2-10\r\n"); 00075 EventAcq.attach(&FEventAcq, 0.5); // 00076 AngleIncCons = 0; 00077 comptage = 0; 00078 BoutonChange = false; 00079 VoieA.rise(&FrontMontantA); 00080 // mesure de poids 00081 AdsA0.write(1); // chanel 1 selectionne 00082 AdsTemp.write(0); // entree temp selectionne 00083 AdsPwd.write(1); // ADC On 00084 aux = Ads1232.ADS1231_PowerDown (); 00085 aux = Ads1232.ADS1231_Reset (); 00086 EcranMessage("Soufflerie arretee avec aile en place"); 00087 PC.printf("ne rien placer\r\n"); 00088 wait(5); 00089 aux = Ads1232.ADS1231_ReadData_WithoutMass ( &myData, 10 ); 00090 EcranMessage("Ajoutez 2 kg pour tarage"); 00091 PC.printf("placer qqch\r\n"); 00092 wait(5); 00093 EcranMessage("Patientez"); 00094 aux = Ads1232.ADS1231_ReadData_WithCalibratedMass ( &myData, 10 ); 00095 wait(3); 00096 while(1) { 00097 // acquisition des capteurs et envoi wifi. 00098 if (Acquisition==true) { // Si une valeur change 00099 CH0 = LTC2309read(CH0c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 0 00100 CH1 = LTC2309read(CH1c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 1 00101 CH2 = LTC2309read(CH2c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 2 00102 CH3 = LTC2309read(CH3c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 3 00103 CH4 = LTC2309read(CH4c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 4 00104 CH5 = LTC2309read(CH5c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 5 00105 CH6 = LTC2309read(CH6c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 6 00106 CH7 = LTC2309read(CH7c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 7 00107 NewAffichage = true; 00108 Acquisition = false; 00109 Wifi.printf("$z,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f\r\n",CH0,CH1,CH2,CH3,CH4,CH5,CH6,CH7,FX,FZ,AngleIncMes); 00110 PC.printf("$z,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f,%0.0f\r\n",CH0,CH1,CH2,CH3,CH4,CH5,CH6,CH7,FX,FZ,AngleIncMes); 00111 AdsA0.write(1); // chanel 1 selectionne 00112 AdsTemp.write(0); // entree temp selectionne 00113 AdsPwd.write(1); // ADC On 00114 00115 aux = Ads1232.ADS1231_ReadRawData ( &myData, 4); 00116 myCalculatedMass = Ads1232.ADS1231_CalculateMass ( &myData, 2.0, ADS1231::ADS1231_SCALE_kg ); 00117 myCalculatedVoltage = Ads1232.ADS1231_CalculateVoltage ( &myData, 5.0 ); 00118 FZ = myCalculatedMass.myMass; 00119 PC.printf("Raw Data: %ld Mass %0.5f kg Voltage: %0.5f mV\r\n", (uint32_t)myData.myRawValue, myCalculatedMass.myMass, 1000*myCalculatedVoltage.myVoltage); 00120 } 00121 00122 if (NewAffichage==true) { // Si NewAffichage est égale à True, on raffraichit l'écran 00123 NewAffichage = false; 00124 EcranPrincipale(); 00125 } 00126 // gestion moteur dangle 00127 float AngleIncMesnew = 166.0-(potmesureangle.read()*333.0); // mesure d'angle en degré 00128 if (AngleIncMesnew != AngleIncMes) { 00129 AngleIncMes = AngleIncMesnew; 00130 NewAffichage = true; 00131 } 00132 if (BoutonChange) { 00133 PC.printf("Valeur angle %i\r\n",AngleIncCons); 00134 BoutonChange = 0; 00135 } 00136 //sleep(); 00137 // bouger moteur 00138 if ((AngleIncCons-AngleIncMes)>1) { 00139 MoteurIN1.write(0); 00140 MoteurIN2.write(1); 00141 } else if ((AngleIncCons-AngleIncMes)<-1) { 00142 MoteurIN1.write(1); 00143 MoteurIN2.write(0); 00144 } else { 00145 MoteurIN1.write(0); 00146 MoteurIN2.write(0); 00147 } 00148 00149 //acquisition des donnees wifi 00150 if (Wifi.dataready()) { 00151 strcpy(WifiPhrase,Wifi.read()); 00152 Wifi.printf("$l%s\r\n",WifiPhrase); 00153 switch (WifiPhrase[1]) { 00154 case 'm': 00155 if (AngleIncCons<20) AngleIncCons=AngleIncCons+1; 00156 Wifi.printf("$l%.0f\r\n",AngleIncCons); 00157 break; 00158 case 'n' : 00159 if (AngleIncCons>-20) AngleIncCons=AngleIncCons-1; 00160 Wifi.printf("$l%.0f\r\n",AngleIncCons); 00161 break; 00162 } 00163 } 00164 } 00165 }
Generated on Sat Jul 16 2022 17:41:05 by 1.7.2