SysBee v1
Dependencies: C027_Support mbed
Fork of App_Pese_Ruche_SYSBEE by
Diff: main.cpp
- Revision:
- 8:3af661bcfcec
- Parent:
- 7:95ddf8fa6260
- Child:
- 9:4c09643fbfb9
diff -r 95ddf8fa6260 -r 3af661bcfcec main.cpp --- a/main.cpp Tue Sep 11 13:20:01 2018 +0000 +++ b/main.cpp Thu Sep 13 08:54:00 2018 +0000 @@ -35,6 +35,8 @@ #define WEEK_COUNT ((int)(WEEK_INTERVAL / AVERAGE_INTERVAL)) +#define SEUIL 0.5 + //#define SENSOR_OFFSET 6.1f //#define SENSOR_FACTOR 39.0f #define SENSOR_OFFSET 9.4f @@ -61,6 +63,7 @@ char buffer[1024]; float average_values[AVERAGE_COUNT] = {0.0f}; +float week_values[WEEK_COUNT] = {0.0f}; //float diff_values[AVERAGE_COUNT] = {0.0f}; float last_average = 0; float week_last_average = 0; @@ -174,9 +177,26 @@ for ( i = 1; i < size_tab; i++) differential += (tab[i] - tab[i-1])/time_diff; - return differential/size_tab; -} - + return differential/(size_tab -1); +} +/* +//return the real daily average +float true_average(float tab[], float differential) +{ + int i; + float dpoint, avg = 0, error = 0; + for(i = 1; i < size_tab; i++) + { + dpoint = (tab[i] - tab[i-1])/time_diff; + if ((differential + SEUIL > dpoint) && (differential - SEUIL < dpoint)) + avg += tab[i]; + else + error ++; + } + avg = avg/(AVERAGE_COUNT - (error +1)); + return avg; +} + */ void init_modem(void) { @@ -195,7 +215,7 @@ pc.printf("MODEM net_status failed...\n\r"); pc.printf("\x1b[0m"); wait(1); - } + } modem.dumpDevStatus(&devStatus); } @@ -222,6 +242,7 @@ case HIVE_STATE_MEASURE: average_values[average_ticks_passed] = get_averaged_weight(); + week_values[week_ticks_passed] = get_averaged_weight(); pc.printf("Weight is %02.2fkg\n\r", average_values[average_ticks_passed]); // if we are of the first measure use the one at the end of the list (last one) current_measure_diff = average_ticks_passed == 0 ? average_values[average_ticks_passed] - average_values[AVERAGE_COUNT - 1] : average_values[average_ticks_passed] - average_values[average_ticks_passed - 1]; @@ -244,11 +265,12 @@ current_average += average_values[i]; } current_average /= average_ticks_passed; + dif_av = get_differential_average(average_values); + current_average = average_values[0] + dif_av * (average_ticks_passed -1); current_average_diff = current_average - last_average; last_average = current_average; - /*dif_av = get_differential_average(average_values) - ((dif_av*AVERAGE_COUNT)+average_values[AVERAGE_COUNT]) - (average_values[AVERAGE_COUNT]);*/ + if (current_average_diff > DIFF_THRESHOLD) { sprintf(buffer, "1 There is more and more honey in the hive ! %0.1fkg of change in %d hours !", current_average_diff, AVERAGE_INTERVAL / 60); @@ -278,6 +300,8 @@ } week_average /= week_ticks_passed; week_average_diff = week_average - week_last_average; + dif_av = get_differential_average(average_values); + current_average = week_values[0] + dif_av * (week_ticks_passed -1); week_last_average = week_average; if (week_average_diff > DIFF_THRESHOLD) {