sp3
Dependencies: FT800_2 C12832 ADS1231 WifiEsp8266 LTC2309 affichage
main.cpp@1:2d11586bb22a, 2021-06-10 (annotated)
- Committer:
- arkadia
- Date:
- Thu Jun 10 15:29:17 2021 +0000
- Revision:
- 1:2d11586bb22a
- Parent:
- 0:057ff8b9b8c4
sp2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nk_ralph | 0:057ff8b9b8c4 | 1 | #include "mbed.h" |
nk_ralph | 0:057ff8b9b8c4 | 2 | #include "affichage.h" |
nk_ralph | 0:057ff8b9b8c4 | 3 | #include "ltc2309.h" |
arkadia | 1:2d11586bb22a | 4 | #include "wifiesp8266.h" |
arkadia | 1:2d11586bb22a | 5 | #include "constante.h" |
arkadia | 1:2d11586bb22a | 6 | #include "ADS1231.h" |
nk_ralph | 0:057ff8b9b8c4 | 7 | |
arkadia | 1:2d11586bb22a | 8 | float FZ; |
arkadia | 1:2d11586bb22a | 9 | float FX; |
arkadia | 1:2d11586bb22a | 10 | float AngleIncMes; |
arkadia | 1:2d11586bb22a | 11 | float AngleIncCons; |
arkadia | 1:2d11586bb22a | 12 | float CH0; // PRESSION |
nk_ralph | 0:057ff8b9b8c4 | 13 | float CH1; |
nk_ralph | 0:057ff8b9b8c4 | 14 | float CH2; |
nk_ralph | 0:057ff8b9b8c4 | 15 | float CH3; |
nk_ralph | 0:057ff8b9b8c4 | 16 | float CH4; |
nk_ralph | 0:057ff8b9b8c4 | 17 | float CH5; |
nk_ralph | 0:057ff8b9b8c4 | 18 | float CH6; |
nk_ralph | 0:057ff8b9b8c4 | 19 | float CH7; |
arkadia | 1:2d11586bb22a | 20 | AnalogIn potmesureangle(PC_2); // potentiometre dans l'aile |
arkadia | 1:2d11586bb22a | 21 | DigitalOut MoteurIN1(PC_8); // rotation anti horaire (-20°) fil vert PB0 |
arkadia | 1:2d11586bb22a | 22 | DigitalOut MoteurIN2(PC_9); // rotation horaire (+20°) fil blanc PC1 |
arkadia | 1:2d11586bb22a | 23 | signed int comptage; |
arkadia | 1:2d11586bb22a | 24 | DigitalIn VoieB(PA_1); |
arkadia | 1:2d11586bb22a | 25 | InterruptIn VoieA(PB_0); |
arkadia | 1:2d11586bb22a | 26 | char BoutonChange; |
arkadia | 1:2d11586bb22a | 27 | DigitalOut AdsA0(_A0); |
arkadia | 1:2d11586bb22a | 28 | DigitalOut AdsPwd(_Pwd); |
arkadia | 1:2d11586bb22a | 29 | DigitalOut AdsTemp(_Temp); |
arkadia | 1:2d11586bb22a | 30 | ADS1231 Ads1232 ( _Sclk, _Dout ); |
nk_ralph | 0:057ff8b9b8c4 | 31 | |
arkadia | 1:2d11586bb22a | 32 | ADS1231::ADS1231_status_t aux; |
arkadia | 1:2d11586bb22a | 33 | ADS1231::Vector_count_t myData; |
arkadia | 1:2d11586bb22a | 34 | ADS1231::Vector_mass_t myCalculatedMass; |
arkadia | 1:2d11586bb22a | 35 | ADS1231::Vector_voltage_t myCalculatedVoltage; |
nk_ralph | 0:057ff8b9b8c4 | 36 | |
nk_ralph | 0:057ff8b9b8c4 | 37 | /***********************************************************************************************************************/ |
nk_ralph | 0:057ff8b9b8c4 | 38 | /* Main function */ |
nk_ralph | 0:057ff8b9b8c4 | 39 | bool NewAffichage = true; |
nk_ralph | 0:057ff8b9b8c4 | 40 | bool Acquisition = false; |
arkadia | 1:2d11586bb22a | 41 | RawSerial PC(USBTX, USBRX); |
arkadia | 1:2d11586bb22a | 42 | WifiEsp8266 Wifi(PA_11,PA_12); // WifiEsp8266(PinName Txd, PinName Rxd); |
arkadia | 1:2d11586bb22a | 43 | //float MesureAngle; // mesure du potentiometre dans l'aile |
arkadia | 1:2d11586bb22a | 44 | //float ConsigneAngle; //= 0.47; // valeur entre 0,44 et 0,56 // consigne en pourcentage ou degré |
nk_ralph | 0:057ff8b9b8c4 | 45 | |
nk_ralph | 0:057ff8b9b8c4 | 46 | Ticker EventAcq; |
nk_ralph | 0:057ff8b9b8c4 | 47 | |
nk_ralph | 0:057ff8b9b8c4 | 48 | void FEventAcq() |
nk_ralph | 0:057ff8b9b8c4 | 49 | { |
nk_ralph | 0:057ff8b9b8c4 | 50 | Acquisition = true; |
nk_ralph | 0:057ff8b9b8c4 | 51 | } |
arkadia | 1:2d11586bb22a | 52 | void FrontMontantA(void) |
arkadia | 1:2d11586bb22a | 53 | { |
arkadia | 1:2d11586bb22a | 54 | if (VoieB.read()==1) AngleIncCons = AngleIncCons + 1; |
arkadia | 1:2d11586bb22a | 55 | else AngleIncCons = AngleIncCons - 1; |
arkadia | 1:2d11586bb22a | 56 | BoutonChange++; |
arkadia | 1:2d11586bb22a | 57 | } |
arkadia | 1:2d11586bb22a | 58 | void FrontDescendantA(void) |
arkadia | 1:2d11586bb22a | 59 | { |
arkadia | 1:2d11586bb22a | 60 | if(VoieB.read()==0) AngleIncCons = AngleIncCons + 1; |
arkadia | 1:2d11586bb22a | 61 | else AngleIncCons = AngleIncCons - 1; |
arkadia | 1:2d11586bb22a | 62 | BoutonChange++; |
nk_ralph | 0:057ff8b9b8c4 | 63 | |
arkadia | 1:2d11586bb22a | 64 | } |
nk_ralph | 0:057ff8b9b8c4 | 65 | int main() |
nk_ralph | 0:057ff8b9b8c4 | 66 | { |
nk_ralph | 0:057ff8b9b8c4 | 67 | luminosite(128); |
nk_ralph | 0:057ff8b9b8c4 | 68 | LTC2309Init(); |
nk_ralph | 0:057ff8b9b8c4 | 69 | LTC2309Autozero(); |
arkadia | 1:2d11586bb22a | 70 | char WifiPhrase[maxdata]; |
arkadia | 1:2d11586bb22a | 71 | MoteurIN1.write(0); |
arkadia | 1:2d11586bb22a | 72 | MoteurIN2.write(0); |
arkadia | 1:2d11586bb22a | 73 | PC.baud(921600); |
arkadia | 1:2d11586bb22a | 74 | PC.printf("Hello je suis SP2-10\r\n"); |
nk_ralph | 0:057ff8b9b8c4 | 75 | EventAcq.attach(&FEventAcq, 0.5); // |
arkadia | 1:2d11586bb22a | 76 | AngleIncCons = 0; |
arkadia | 1:2d11586bb22a | 77 | comptage = 0; |
arkadia | 1:2d11586bb22a | 78 | BoutonChange = false; |
arkadia | 1:2d11586bb22a | 79 | VoieA.rise(&FrontMontantA); |
arkadia | 1:2d11586bb22a | 80 | // mesure de poids |
arkadia | 1:2d11586bb22a | 81 | AdsA0.write(1); // chanel 1 selectionne |
arkadia | 1:2d11586bb22a | 82 | AdsTemp.write(0); // entree temp selectionne |
arkadia | 1:2d11586bb22a | 83 | AdsPwd.write(1); // ADC On |
arkadia | 1:2d11586bb22a | 84 | aux = Ads1232.ADS1231_PowerDown (); |
arkadia | 1:2d11586bb22a | 85 | aux = Ads1232.ADS1231_Reset (); |
arkadia | 1:2d11586bb22a | 86 | EcranMessage("Soufflerie arretee avec aile en place"); |
arkadia | 1:2d11586bb22a | 87 | PC.printf("ne rien placer\r\n"); |
arkadia | 1:2d11586bb22a | 88 | wait(5); |
arkadia | 1:2d11586bb22a | 89 | aux = Ads1232.ADS1231_ReadData_WithoutMass ( &myData, 10 ); |
arkadia | 1:2d11586bb22a | 90 | EcranMessage("Ajoutez 2 kg pour tarage"); |
arkadia | 1:2d11586bb22a | 91 | PC.printf("placer qqch\r\n"); |
arkadia | 1:2d11586bb22a | 92 | wait(5); |
arkadia | 1:2d11586bb22a | 93 | EcranMessage("Patientez"); |
arkadia | 1:2d11586bb22a | 94 | aux = Ads1232.ADS1231_ReadData_WithCalibratedMass ( &myData, 10 ); |
arkadia | 1:2d11586bb22a | 95 | wait(3); |
nk_ralph | 0:057ff8b9b8c4 | 96 | while(1) { |
arkadia | 1:2d11586bb22a | 97 | // acquisition des capteurs et envoi wifi. |
nk_ralph | 0:057ff8b9b8c4 | 98 | if (Acquisition==true) { // Si une valeur change |
nk_ralph | 0:057ff8b9b8c4 | 99 | CH0 = LTC2309read(CH0c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 0 |
nk_ralph | 0:057ff8b9b8c4 | 100 | CH1 = LTC2309read(CH1c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 1 |
nk_ralph | 0:057ff8b9b8c4 | 101 | CH2 = LTC2309read(CH2c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 2 |
nk_ralph | 0:057ff8b9b8c4 | 102 | CH3 = LTC2309read(CH3c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 3 |
nk_ralph | 0:057ff8b9b8c4 | 103 | CH4 = LTC2309read(CH4c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 4 |
nk_ralph | 0:057ff8b9b8c4 | 104 | CH5 = LTC2309read(CH5c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 5 |
nk_ralph | 0:057ff8b9b8c4 | 105 | CH6 = LTC2309read(CH6c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 6 |
nk_ralph | 0:057ff8b9b8c4 | 106 | CH7 = LTC2309read(CH7c); // Acquisition de la valeur de champ de pression en Pascal pour la voie 7 |
nk_ralph | 0:057ff8b9b8c4 | 107 | NewAffichage = true; |
nk_ralph | 0:057ff8b9b8c4 | 108 | Acquisition = false; |
arkadia | 1:2d11586bb22a | 109 | 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); |
arkadia | 1:2d11586bb22a | 110 | 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); |
arkadia | 1:2d11586bb22a | 111 | AdsA0.write(1); // chanel 1 selectionne |
arkadia | 1:2d11586bb22a | 112 | AdsTemp.write(0); // entree temp selectionne |
arkadia | 1:2d11586bb22a | 113 | AdsPwd.write(1); // ADC On |
arkadia | 1:2d11586bb22a | 114 | |
arkadia | 1:2d11586bb22a | 115 | aux = Ads1232.ADS1231_ReadRawData ( &myData, 4); |
arkadia | 1:2d11586bb22a | 116 | myCalculatedMass = Ads1232.ADS1231_CalculateMass ( &myData, 2.0, ADS1231::ADS1231_SCALE_kg ); |
arkadia | 1:2d11586bb22a | 117 | myCalculatedVoltage = Ads1232.ADS1231_CalculateVoltage ( &myData, 5.0 ); |
arkadia | 1:2d11586bb22a | 118 | FZ = myCalculatedMass.myMass; |
arkadia | 1:2d11586bb22a | 119 | PC.printf("Raw Data: %ld Mass %0.5f kg Voltage: %0.5f mV\r\n", (uint32_t)myData.myRawValue, myCalculatedMass.myMass, 1000*myCalculatedVoltage.myVoltage); |
nk_ralph | 0:057ff8b9b8c4 | 120 | } |
nk_ralph | 0:057ff8b9b8c4 | 121 | |
arkadia | 1:2d11586bb22a | 122 | if (NewAffichage==true) { // Si NewAffichage est égale à True, on raffraichit l'écran |
nk_ralph | 0:057ff8b9b8c4 | 123 | NewAffichage = false; |
nk_ralph | 0:057ff8b9b8c4 | 124 | EcranPrincipale(); |
nk_ralph | 0:057ff8b9b8c4 | 125 | } |
arkadia | 1:2d11586bb22a | 126 | // gestion moteur dangle |
arkadia | 1:2d11586bb22a | 127 | float AngleIncMesnew = 166.0-(potmesureangle.read()*333.0); // mesure d'angle en degré |
arkadia | 1:2d11586bb22a | 128 | if (AngleIncMesnew != AngleIncMes) { |
arkadia | 1:2d11586bb22a | 129 | AngleIncMes = AngleIncMesnew; |
arkadia | 1:2d11586bb22a | 130 | NewAffichage = true; |
arkadia | 1:2d11586bb22a | 131 | } |
arkadia | 1:2d11586bb22a | 132 | if (BoutonChange) { |
arkadia | 1:2d11586bb22a | 133 | PC.printf("Valeur angle %i\r\n",AngleIncCons); |
arkadia | 1:2d11586bb22a | 134 | BoutonChange = 0; |
arkadia | 1:2d11586bb22a | 135 | } |
arkadia | 1:2d11586bb22a | 136 | //sleep(); |
arkadia | 1:2d11586bb22a | 137 | // bouger moteur |
arkadia | 1:2d11586bb22a | 138 | if ((AngleIncCons-AngleIncMes)>1) { |
arkadia | 1:2d11586bb22a | 139 | MoteurIN1.write(0); |
arkadia | 1:2d11586bb22a | 140 | MoteurIN2.write(1); |
arkadia | 1:2d11586bb22a | 141 | } else if ((AngleIncCons-AngleIncMes)<-1) { |
arkadia | 1:2d11586bb22a | 142 | MoteurIN1.write(1); |
arkadia | 1:2d11586bb22a | 143 | MoteurIN2.write(0); |
arkadia | 1:2d11586bb22a | 144 | } else { |
arkadia | 1:2d11586bb22a | 145 | MoteurIN1.write(0); |
arkadia | 1:2d11586bb22a | 146 | MoteurIN2.write(0); |
arkadia | 1:2d11586bb22a | 147 | } |
arkadia | 1:2d11586bb22a | 148 | |
arkadia | 1:2d11586bb22a | 149 | //acquisition des donnees wifi |
arkadia | 1:2d11586bb22a | 150 | if (Wifi.dataready()) { |
arkadia | 1:2d11586bb22a | 151 | strcpy(WifiPhrase,Wifi.read()); |
arkadia | 1:2d11586bb22a | 152 | Wifi.printf("$l%s\r\n",WifiPhrase); |
arkadia | 1:2d11586bb22a | 153 | switch (WifiPhrase[1]) { |
arkadia | 1:2d11586bb22a | 154 | case 'm': |
arkadia | 1:2d11586bb22a | 155 | if (AngleIncCons<20) AngleIncCons=AngleIncCons+1; |
arkadia | 1:2d11586bb22a | 156 | Wifi.printf("$l%.0f\r\n",AngleIncCons); |
arkadia | 1:2d11586bb22a | 157 | break; |
arkadia | 1:2d11586bb22a | 158 | case 'n' : |
arkadia | 1:2d11586bb22a | 159 | if (AngleIncCons>-20) AngleIncCons=AngleIncCons-1; |
arkadia | 1:2d11586bb22a | 160 | Wifi.printf("$l%.0f\r\n",AngleIncCons); |
arkadia | 1:2d11586bb22a | 161 | break; |
arkadia | 1:2d11586bb22a | 162 | } |
arkadia | 1:2d11586bb22a | 163 | } |
nk_ralph | 0:057ff8b9b8c4 | 164 | } |
nk_ralph | 0:057ff8b9b8c4 | 165 | } |