From 1a54d4bc59eb0bd38bba0f9fc673129e9a97d299 Mon Sep 17 00:00:00 2001 From: Kai Lauterbach Date: Mon, 5 Feb 2024 19:47:43 +0100 Subject: [PATCH] Code formatted --- ESP32_Oscilloscope/data_analysis.ino | 151 +++++++------ ESP32_Oscilloscope/options_handler.ino | 300 ++++++++++++++----------- 2 files changed, 251 insertions(+), 200 deletions(-) diff --git a/ESP32_Oscilloscope/data_analysis.ino b/ESP32_Oscilloscope/data_analysis.ino index 03aeefd..5c60889 100644 --- a/ESP32_Oscilloscope/data_analysis.ino +++ b/ESP32_Oscilloscope/data_analysis.ino @@ -1,12 +1,14 @@ -void peak_mean(uint16_t *i2s_buffer, uint32_t len, float * max_value, float * min_value, float *pt_mean) { +void peak_mean(uint16_t *i2s_buffer, uint32_t len, float *max_value, float *min_value, float *pt_mean) +{ max_value[0] = i2s_buffer[0]; min_value[0] = i2s_buffer[0]; mean_filter filter(5); filter.init(i2s_buffer[0]); float mean = 0; - for (uint32_t i = 1; i < len; i++) { + for (uint32_t i = 1; i < len; i++) + { float value = filter.filter((float)i2s_buffer[i]); if (value > max_value[0]) @@ -21,31 +23,36 @@ void peak_mean(uint16_t *i2s_buffer, uint32_t len, float * max_value, float * mi pt_mean[0] = mean; } - -//true if digital/ false if analog -bool digital_analog(uint16_t *i2s_buffer, uint32_t max_v, uint32_t min_v) { +// true if digital/ false if analog +bool digital_analog(uint16_t *i2s_buffer, uint32_t max_v, uint32_t min_v) +{ uint32_t upper_threshold = max_v - 0.05 * (max_v - min_v); uint32_t lower_threshold = min_v + 0.05 * (max_v - min_v); uint32_t digital_data = 0; uint32_t analog_data = 0; - for (uint32_t i = 0; i < BUFF_SIZE; i++) { - if (i2s_buffer[i] > lower_threshold) { - if (i2s_buffer[i] > upper_threshold) { - //HIGH DIGITAL + for (uint32_t i = 0; i < BUFF_SIZE; i++) + { + if (i2s_buffer[i] > lower_threshold) + { + if (i2s_buffer[i] > upper_threshold) + { + // HIGH DIGITAL digital_data++; } - else { - //ANALOG/TRANSITION + else + { + // ANALOG/TRANSITION analog_data++; } } - else { - //LOW DIGITAL + else + { + // LOW DIGITAL digital_data++; } } - //more than 50% of data is analog + // more than 50% of data is analog if (analog_data < digital_data) return true; @@ -60,7 +67,8 @@ void trigger_freq_analog(uint16_t *i2s_buffer, float *pt_freq, float *pt_period, uint32_t *pt_trigger0, - uint32_t *pt_trigger1) { + uint32_t *pt_trigger1) +{ float freq = 0; float period = 0; bool signal_side = false; @@ -69,21 +77,25 @@ void trigger_freq_analog(uint16_t *i2s_buffer, uint32_t trigger_temp[trigger_num] = {0}; uint32_t trigger_index = 0; - //get initial signal relative to the mean - if (to_voltage(i2s_buffer[0]) > mean) { + // get initial signal relative to the mean + if (to_voltage(i2s_buffer[0]) > mean) + { signal_side = true; } - - //waveform repetitions calculation + get triggers time + // waveform repetitions calculation + get triggers time uint32_t wave_center = (max_v + min_v) / 2; - for (uint32_t i = 1 ; i < BUFF_SIZE; i++) { - if (signal_side && i2s_buffer[i] < wave_center - (wave_center - min_v) * 0.2) { + for (uint32_t i = 1; i < BUFF_SIZE; i++) + { + if (signal_side && i2s_buffer[i] < wave_center - (wave_center - min_v) * 0.2) + { signal_side = false; } - else if (!signal_side && i2s_buffer[i] > wave_center + (max_v - wave_center) * 0.2) { + else if (!signal_side && i2s_buffer[i] > wave_center + (max_v - wave_center) * 0.2) + { freq++; - if (trigger_count < trigger_num) { + if (trigger_count < trigger_num) + { trigger_temp[trigger_count] = i; trigger_count++; } @@ -91,62 +103,66 @@ void trigger_freq_analog(uint16_t *i2s_buffer, } } - //frequency calculation - if (trigger_count < 2) { + // frequency calculation + if (trigger_count < 2) + { trigger_temp[0] = 0; trigger_index = 0; freq = 0; period = 0; } - else { + else + { - //simple frequency calculation fair enough for frequencies over 2khz (20hz resolution) + // simple frequency calculation fair enough for frequencies over 2khz (20hz resolution) freq = freq * 1000 / 50; - period = (float)(sample_rate * 1000.0) / freq; //us + period = (float)(sample_rate * 1000.0) / freq; // us - //from 2000 to 80 hz -> uses mean of the periods for precision - if (freq < 2000 && freq > 80) { + // from 2000 to 80 hz -> uses mean of the periods for precision + if (freq < 2000 && freq > 80) + { period = 0; - for (uint32_t i = 1; i < trigger_count; i++) { + for (uint32_t i = 1; i < trigger_count; i++) + { period += trigger_temp[i] - trigger_temp[i - 1]; } period /= (trigger_count - 1); freq = sample_rate * 1000 / period; } - //under 80hz, single period for frequency calculation - else if (trigger_count > 1 && freq <= 80) { + // under 80hz, single period for frequency calculation + else if (trigger_count > 1 && freq <= 80) + { period = trigger_temp[1] - trigger_temp[0]; freq = sample_rate * 1000 / period; } } - //setting triggers offset and getting second trigger for debug cursor on drawn_channel1 + // setting triggers offset and getting second trigger for debug cursor on drawn_channel1 /* The trigger function uses a rise porcentage (5%) obove the mean, thus, the real waveform starting point is some datapoints back. The resulting trigger gets a negative offset of 5% of the calculated period */ uint32_t trigger2 = 0; - if (trigger_temp[0] - period * 0.05 > 0 && trigger_count > 1) { + if (trigger_temp[0] - period * 0.05 > 0 && trigger_count > 1) + { trigger_index = trigger_temp[0] - period * 0.05; trigger2 = trigger_temp[1] - period * 0.05; } - else if (trigger_count > 2) { + else if (trigger_count > 2) + { trigger_index = trigger_temp[1] - period * 0.05; if (trigger_count > 2) trigger2 = trigger_temp[2] - period * 0.05; } - pt_trigger0[0] = trigger_index; pt_trigger1[0] = trigger2; pt_freq[0] = freq; pt_period[0] = period; - } - void trigger_freq_digital(uint16_t *i2s_buffer, float sample_rate, float mean, @@ -154,7 +170,8 @@ void trigger_freq_digital(uint16_t *i2s_buffer, uint32_t min_v, float *pt_freq, float *pt_period, - uint32_t *pt_trigger0) { + uint32_t *pt_trigger0) +{ float freq = 0; float period = 0; @@ -164,32 +181,38 @@ void trigger_freq_digital(uint16_t *i2s_buffer, uint32_t trigger_temp[trigger_num] = {0}; uint32_t trigger_index = 0; - //get initial signal relative to the mean - if (to_voltage(i2s_buffer[0]) > mean) { + // get initial signal relative to the mean + if (to_voltage(i2s_buffer[0]) > mean) + { signal_side = true; } - //waveform repetitions calculation + get triggers time + // waveform repetitions calculation + get triggers time uint32_t wave_center = (max_v + min_v) / 2; bool normal_high = (mean > to_voltage(wave_center)) ? true : false; - if (max_v - min_v > 4095 * (0.4 / 3.3)) { - for (uint32_t i = 1 ; i < BUFF_SIZE; i++) { - if (signal_side && i2s_buffer[i] < wave_center - (wave_center - min_v) * 0.2) { + if (max_v - min_v > 4095 * (0.4 / 3.3)) + { + for (uint32_t i = 1; i < BUFF_SIZE; i++) + { + if (signal_side && i2s_buffer[i] < wave_center - (wave_center - min_v) * 0.2) + { - //signal was high, fell -> trigger if normal high - if (trigger_count < trigger_num && normal_high) { + // signal was high, fell -> trigger if normal high + if (trigger_count < trigger_num && normal_high) + { trigger_temp[trigger_count] = i; trigger_count++; } signal_side = false; - } - else if (!signal_side && i2s_buffer[i] > wave_center + (max_v - wave_center) * 0.2) { + else if (!signal_side && i2s_buffer[i] > wave_center + (max_v - wave_center) * 0.2) + { freq++; - //signal was low, rose -> trigger if normal low - if (trigger_count < trigger_num && !normal_high) { + // signal was low, rose -> trigger if normal low + if (trigger_count < trigger_num && !normal_high) + { trigger_temp[trigger_count] = i; trigger_count++; } @@ -199,26 +222,30 @@ void trigger_freq_digital(uint16_t *i2s_buffer, } freq = freq * 1000 / 50; - period = (float)(sample_rate * 1000.0) / freq; //us + period = (float)(sample_rate * 1000.0) / freq; // us - if (trigger_count > 1) { - //from 2000 to 80 hz -> uses mean of the periods for precision - if (freq < 2000 && freq > 80) { + if (trigger_count > 1) + { + // from 2000 to 80 hz -> uses mean of the periods for precision + if (freq < 2000 && freq > 80) + { period = 0; - for (uint32_t i = 1; i < trigger_count; i++) { + for (uint32_t i = 1; i < trigger_count; i++) + { period += trigger_temp[i] - trigger_temp[i - 1]; } period /= (trigger_count - 1); freq = sample_rate * 1000 / period; } - //under 80hz, single period for frequency calculation - else if (trigger_count > 1 && freq <= 80) { + // under 80hz, single period for frequency calculation + else if (trigger_count > 1 && freq <= 80) + { period = trigger_temp[1] - trigger_temp[0]; freq = sample_rate * 1000 / period; } } - + trigger_index = trigger_temp[0]; if (trigger_index > 10) @@ -227,11 +254,7 @@ void trigger_freq_digital(uint16_t *i2s_buffer, trigger_index = 0; } - - - pt_trigger0[0] = trigger_index; pt_freq[0] = freq; pt_period[0] = period; - } diff --git a/ESP32_Oscilloscope/options_handler.ino b/ESP32_Oscilloscope/options_handler.ino index cdf2564..901ad5d 100644 --- a/ESP32_Oscilloscope/options_handler.ino +++ b/ESP32_Oscilloscope/options_handler.ino @@ -34,87 +34,99 @@ void menu_handler() { button(); } -void button() { - if ( btnok == 1 || btnbk == 1 || btnpl == 1 || btnmn == 1) +void button() +{ + if (btnok == 1 || btnbk == 1 || btnpl == 1 || btnmn == 1) { menu_action = true; } if (menu == true) { - if (set_value) { - switch (opt) { - case Vdiv: - if (btnpl == 1) { - volts_index++; - if (volts_index >= sizeof(voltage_division) / sizeof(*voltage_division)) { - volts_index = 0; - } - btnpl = 0; - } - else if (btnmn == 1) { - volts_index--; - if (volts_index < 0) { - volts_index = sizeof(voltage_division) / sizeof(*voltage_division) - 1; - } - btnmn = 0; - } - - v_div = voltage_division[volts_index]; - break; - - case Sdiv: - if (btnmn == 1) { - tscale_index++; - if (tscale_index >= sizeof(time_division) / sizeof(*time_division)) { - tscale_index = 0; - } - btnmn = 0; - } - else if (btnpl == 1) { - tscale_index--; - if (tscale_index < 0) { - tscale_index = sizeof(time_division) / sizeof(*time_division) - 1; - } - btnpl = 0; - } - - s_div = time_division[tscale_index]; - break; - - case Offset: - if (btnmn == 1) { - offset += 0.1 * (v_div * 4) / 3300; - btnmn = 0; - } - else if (btnpl == 1) { - offset -= 0.1 * (v_div * 4) / 3300; - btnpl = 0; - } - - if (offset > 3.3) - offset = 3.3; - if (offset < -3.3) - offset = -3.3; - - break; - - case TOffset: - if (btnpl == 1) + if (set_value) + { + switch (opt) + { + case Vdiv: + if (btnpl == 1) + { + volts_index++; + if (volts_index >= sizeof(voltage_division) / sizeof(*voltage_division)) { - toffset += 0.1 * s_div; - btnpl = 0; + volts_index = 0; } - else if (btnmn == 1) + btnpl = 0; + } + else if (btnmn == 1) + { + volts_index--; + if (volts_index < 0) { - toffset -= 0.1 * s_div; - btnmn = 0; + volts_index = sizeof(voltage_division) / sizeof(*voltage_division) - 1; } + btnmn = 0; + } - break; + v_div = voltage_division[volts_index]; + break; - default: - break; + case Sdiv: + if (btnmn == 1) + { + tscale_index++; + if (tscale_index >= sizeof(time_division) / sizeof(*time_division)) + { + tscale_index = 0; + } + btnmn = 0; + } + else if (btnpl == 1) + { + tscale_index--; + if (tscale_index < 0) + { + tscale_index = sizeof(time_division) / sizeof(*time_division) - 1; + } + btnpl = 0; + } + s_div = time_division[tscale_index]; + break; + + case Offset: + if (btnmn == 1) + { + offset += 0.1 * (v_div * 4) / 3300; + btnmn = 0; + } + else if (btnpl == 1) + { + offset -= 0.1 * (v_div * 4) / 3300; + btnpl = 0; + } + + if (offset > 3.3) + offset = 3.3; + if (offset < -3.3) + offset = -3.3; + + break; + + case TOffset: + if (btnpl == 1) + { + toffset += 0.1 * s_div; + btnpl = 0; + } + else if (btnmn == 1) + { + toffset -= 0.1 * s_div; + btnmn = 0; + } + + break; + + default: + break; } if (btnbk == 1) { @@ -151,67 +163,68 @@ void button() { hide_menu(); btnbk = 0; } - if (btnok == 1) { - switch (opt) { - case Autoscale: - auto_scale = !auto_scale; - break; + if (btnok == 1) + { + switch (opt) + { + case Autoscale: + auto_scale = !auto_scale; + break; - case Vdiv: - set_value = true; - break; + case Vdiv: + set_value = true; + break; - case Sdiv: - set_value = true; - break; + case Sdiv: + set_value = true; + break; - case Offset: - set_value = true; - break; + case Offset: + set_value = true; + break; - case Stop: - stop = !stop; - Serial.print("Stop : "); - Serial.println(stop); - set_value = false; - break; + case Stop: + stop = !stop; + Serial.print("Stop : "); + Serial.println(stop); + set_value = false; + break; - case TOffset: - set_value = true; - //set_value = false; - break; + case TOffset: + set_value = true; + // set_value = false; + break; - case Single: - single_trigger = true; - set_value = false; - break; + case Single: + single_trigger = true; + set_value = false; + break; - case Reset: - offset = 0; - v_div = 550; - s_div = 10; - tscale_index = 0; - volts_index = 0; - break; + case Reset: + offset = 0; + v_div = 550; + s_div = 10; + tscale_index = 0; + volts_index = 0; + break; - case Probe: - break; + case Probe: + break; - case Mode: - digital_wave_option++; - if (digital_wave_option > 2) - digital_wave_option = 0; - break; + case Mode: + digital_wave_option++; + if (digital_wave_option > 2) + digital_wave_option = 0; + break; - case Filter: - current_filter++; - if (current_filter > 3) - current_filter = 0; - break; - - default: - break; + case Filter: + current_filter++; + if (current_filter > 3) + current_filter = 0; + break; + default: + break; } btnok = 0; @@ -238,71 +251,86 @@ void button() { } btnbk = 0; } - if (btnpl == 1) { + if (btnpl == 1) + { volts_index++; - if (volts_index >= sizeof(voltage_division) / sizeof(*voltage_division)) { + if (volts_index >= sizeof(voltage_division) / sizeof(*voltage_division)) + { volts_index = 0; } btnpl = 0; v_div = voltage_division[volts_index]; } - if (btnmn == 1) { + if (btnmn == 1) + { tscale_index++; - if (tscale_index >= sizeof(time_division) / sizeof(*time_division)) { + if (tscale_index >= sizeof(time_division) / sizeof(*time_division)) + { tscale_index = 0; } btnmn = 0; s_div = time_division[tscale_index]; } } - } -void hide_menu() { +void hide_menu() +{ menu = false; } -void hide_all() { +void hide_all() +{ menu = false; info = false; } -void show_menu() { +void show_menu() +{ menu = true; } -String strings_vdiv() { +String strings_vdiv() +{ return ""; } -String strings_sdiv() { +String strings_sdiv() +{ return ""; } -String strings_offset() { +String strings_offset() +{ return ""; } -String strings_toffset() { +String strings_toffset() +{ return ""; } -String strings_freq() { +String strings_freq() +{ return ""; } -String strings_peak() { +String strings_peak() +{ return ""; } -String strings_vmax() { +String strings_vmax() +{ return ""; } -String strings_vmin() { +String strings_vmin() +{ return ""; } -String strings_filter() { +String strings_filter() +{ return ""; }