/** * Cet exemple correspond à l'application de test de la bibliothèque MeasureUnit qui * permet de calculer la température mesurée par une matrice de thermistance * * Anatole SCHRAMM-HENRY * 17/12/2019 */ #include "MeasureUnit.h" #include "PayloadFormatter.h" #include "Ads1115.h" uint8_t analogInput[] = {0,1,2,3,4,5,6,7}; double *tempArray = NULL; //Objet de calcule de la temperature ThermistorSetting thermistorSetting(3380, 10000); //AdcSetting adcSetting(3300.0, 12, 310, 3); AdcSetting adcSetting(3410.0, 15, 6, 10);//6, 10); Ads1115 adc; MeasureUnit measureUnit(analogInput, 8, 990, thermistorSetting, adc); //Objet de création des trames LoRa PayloadFormatter payloadFormatter(2,4); DateTime payloadDate(2020,12,26,8,42); boolean data(false); uint8_t *payload(NULL); boolean calibrer(false); unsigned long _time(millis()); void setup() { Serial.begin(115200); delay(1000); Serial.println("Start setup"); adc.setAdcSetting(adcSetting); //measureUnit.setGlobalTempOffset(-17); Serial.println("End setup"); Serial.println("| T1 | T2 | T3 | T4 | T5 | T6 | T7 | T8 |"); } void loop() { //Version synchrone //tempArray = measureUnit.getTemperatures(); //Version asynchrone : measureUnit.startTemperatureMeasurement(); //On peut tester si la conversion est terminée avec : //if(measureUnit.isMeasurementReady()) tempArray = measureUnit.getAsyncTemperatures(); if(tempArray != NULL) { Serial.print("|"); for(int i(0); i < 8; i++) { if(i != 7) { Serial.print(" ");Serial.print(tempArray[i],2);Serial.print(" |"); } else { Serial.print(" ");Serial.print(tempArray[i],2);Serial.print(" |"); } } //On affiche la trame associée: payloadFormatter.startSession(1); uint8_t size = payloadFormatter.buildPayload(&payload, &payloadDate,tempArray); if(size != 0) { //Serial.print("LoRa packet --> ");Serial.print("size : ");Serial.print(size);Serial.println(" bytes"); for(int i(0); i < size; i++) { payload[i] <= 0x0F ? Serial.print("0") : Serial.print(""); Serial.print(payload[i], HEX); Serial.print(" "); } Serial.println(); } else Serial.print("Failed to build LoRa packet"); /*if(payloadFormatter.endSession()) Serial.println("Session ended successfully");*/ } //On effectue la calibration if(millis() - _time > 5000 && !calibrer) { Serial.println("********************Starting calibration********************"); measureUnit.levelAsyncTemperaturesOff(); Serial.println("********************Ending calibration********************"); calibrer = true; } if(Serial.available()) { if(Serial.read() == 'c') { //Serial.println("********************Starting calibration********************"); measureUnit.levelAsyncTemperaturesOff(); //Serial.println("********************Ending calibration********************"); } } }