#include #define EC_PIN_ADC 4 #define EC_PIN_FREQ 5 #define EC_PWM_CH 0 #define EC_RESOLUTION 8 #define EC_FREQUENCY 5000 #define EC_ARRAY_SIZE 1024 uint16_t ec_array[EC_ARRAY_SIZE]; uint16_t ec_array_pos=0; unsigned long ec_last_read=0; #define EC_READ_INTERVAL 1 unsigned long last_print=0; float getMean(uint16_t* parray); uint16_t getMin(uint16_t *parray); uint16_t getMax(uint16_t *parray); void setup() { Serial.begin(115200); pinMode(EC_PIN_ADC,INPUT); ledcSetup(EC_PWM_CH, EC_FREQUENCY, EC_RESOLUTION); ledcAttachPin(EC_PIN_FREQ, EC_PWM_CH); ledcWrite(EC_PWM_CH, 127); } void loop() { unsigned long loopmillis=millis(); bool flag_print=false; if (loopmillis>ec_last_read+EC_READ_INTERVAL) { ec_last_read=loopmillis; ec_array_pos++; flag_print= ec_array_pos==EC_ARRAY_SIZE; ec_array_pos%=EC_ARRAY_SIZE; ec_array[ec_array_pos]=analogRead(EC_PIN_ADC); //Serial.print(ec_array[ec_array_pos]); Serial.print(" "); } //if (flag_print) { if (loopmillis>last_print+250) { last_print=loopmillis; Serial.print(getMean(ec_array),3); Serial.print("\t"); Serial.print(getMax(ec_array) - getMin(ec_array)); Serial.println(); } } float getMean(uint16_t *parray) { double mean=0; for (uint16_t i=0;imax) { max=parray[i]; } } return max; }