#include bool flag_print=false; #include "helpfunctions.h" // ######## EC #include "ec.h" // ######## Temperature #include "temperature.h" // ######## Water Level #include "waterlevel.h" // ######## Flow Rate #include "flow.h" unsigned long last_print=0; void setup() { Serial.begin(115200); ec_setup(); waterlevel_setup(); temperature_setup(); flow_setup(); Serial.println("Setup finished"); delay(500); } void loop() { unsigned long loopmillis=millis(); flag_print=false; ec_loop(loopmillis, EC_READ_INTERVAL); temperature_loop(loopmillis, READINTERVAL_DS18B20); waterlevel_loop(loopmillis, READINTERVAL_HCSR04); flow_loop(loopmillis, READINTERVAL_FLOW); if (loopmillis>last_print+500) { last_print=loopmillis; if (isValueArrayOK(ec_array,EC_ARRAY_SIZE,0)) { Serial.print("EC="); Serial.print(getMean(ec_array,EC_ARRAY_SIZE),3); Serial.print(" count (+- "); Serial.print( (getMax(ec_array,EC_ARRAY_SIZE) - getMin(ec_array,EC_ARRAY_SIZE))/2.0); Serial.print(")"); }else{ Serial.print("Waiting for EC"); } if (isValueArrayOKf(tempCmean_reservoir,TEMPMEAN_SIZE,DEVICE_DISCONNECTED_C)){ Serial.print("\t Treservoir="); Serial.print(getMeanf(tempCmean_reservoir,TEMPMEAN_SIZE)); Serial.print("\t Tair="); Serial.print(getMeanf(tempCmean_air,TEMPMEAN_SIZE)); }else{ Serial.print("\t waiting for temperature"); } if (isValueArrayOKf(waterlevelMean,WATERLEVELMEAN_SIZE,-1.0)){ float _max=getMaxf(waterlevelMean,WATERLEVELMEAN_SIZE); float _min=getMinf(waterlevelMean,WATERLEVELMEAN_SIZE); float _filteredWaterlevel=getFilteredf(waterlevelMean,WATERLEVELMEAN_SIZE,8); float _meanWaterlevel=getMeanf(waterlevelMean,WATERLEVELMEAN_SIZE); Serial.print("\t Dist="); Serial.print(_filteredWaterlevel); Serial.print("mm"); Serial.print("(+- "); Serial.print((_max-_min)/2.0); Serial.print(")"); Serial.print(" [mean="); Serial.print(_meanWaterlevel); Serial.print("]"); }else{ Serial.print("\t waiting for distance"); } Serial.print("\t Flow="); Serial.print(flow,2); Serial.print("\t Flowsum="); Serial.print(flow_counter_sum); Serial.println(); } }