#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); //Test adc to ec function output /* Serial.println(); for (int i=830;i<13300;i+=100) { float _ec=ec_getECfromADC(i); Serial.print(i); Serial.print(","); Serial.print(_ec); Serial.println(); } delay(100000); */ //Serial.println("time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted,EC,EC25"); Serial.println("time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted"); } 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); } static bool started=false; static bool ended=false; static unsigned long started_time=0; static unsigned long ended_time=0; if (flow_counter_sum>10 && !started && !ended) { //start started=true; started_time=millis(); Serial.println("Started!"); } static uint32_t last_flow_counter_sum=0; if (loopmillis>last_print+1000) { //test check last_print=loopmillis; if (started && !ended) { Serial.println(flow_counter_sum-last_flow_counter_sum); if (flow_counter_sum-last_flow_counter_sum<=2){ //stopped ended=true; ended_time=millis(); Serial.println("Ended!"); } last_flow_counter_sum=flow_counter_sum; } if (ended) { Serial.println("counts,time"); Serial.print(flow_counter_sum); Serial.print(","); Serial.print((ended_time-started_time)/1000.0); Serial.println(); delay(10000); } } if (loopmillis>last_print+2000 && 1==2) { //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_calib_adc); Serial.print(","); Serial.print(ec_adc); Serial.print(","); Serial.print(ec_adc_adjusted); //Serial.print(","); //Serial.print(ec); Serial.print(","); //Serial.print(ec25); */ 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(); */ } } }