#include bool flag_print=false; #include "helpfunctions.h" #include "ADS1X15.h" ADS1115 ADS(0x48); // ######## EC #include "ec.h" // ######## Temperature #include "temperature.h" // ######## Water Level #include "waterlevel.h" // ######## Flow Rate #include "flow.h" // ######## Soilmoisture #include "soilmoisture.h" unsigned long last_print=0; #define PIN_BUTTON 12 #define PIN_LED 2 void setup() { pinMode(PIN_BUTTON,INPUT_PULLUP); pinMode(PIN_LED,OUTPUT); digitalWrite(PIN_LED,LOW); Serial.begin(115200); //init ADS1115 if (!ADS.begin()) { Serial.println("Error:"); delay(2000); Serial.println("ADS1115 Init Error!"); } ADS.setGain(0); ec_setup(); waterlevel_setup(); temperature_setup(); flow_setup(); //Serial.println("Setup finished"); delay(200); Serial.println("time,tempReservoir,EC,ECadjusted,ECcalib"); } void loop() { unsigned long loopmillis=millis(); flag_print=false; ec_loop(loopmillis); temperature_loop(loopmillis); waterlevel_loop(loopmillis); flow_loop(loopmillis); sm_loop(loopmillis); static bool getReading=false; if (!getReading && !digitalRead(PIN_BUTTON)) { getReading=true; last_measurement_ec=0; //force ec reading now ec_flag_measurement_available=false; digitalWrite(PIN_LED,HIGH); } if (loopmillis>last_print+2000) { //if (ec_flag_measurement_available && getReading) { if (ec_flag_measurement_available) { last_print=loopmillis; getReading=false; ec_flag_measurement_available=false; digitalWrite(PIN_LED,LOW); Serial.print(millis()/1000.0,2); Serial.print(","); Serial.print(getMeanf(tempCmean_reservoir,TEMPMEAN_SIZE)); Serial.print(","); //Serial.print(getMean(sm_mean,SM_SIZE)); Serial.print(","); Serial.print(ec_adc); Serial.print(","); Serial.print(ec_adc_adjusted); Serial.print(","); Serial.print(ec_calib_adc); Serial.println(); /* 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(); */ } } }