int voltage_division[6] = { //screen has 4 divisions, 31 pixels each (125 pixels of height) 550, //fullscreen 3.3V peak-peak 500, 375, 180, 100, 50 }; /*each sample represents 1us (1Msps), thus, the time division is the number of samples per screen division */ float time_division[9] = { //screen has 4 divisions, 60 pixel each (WIDTH pixel of width) 10, 25, 50, 100, 250, 500, 1000, 2500, 5000 }; //, //1Mhz 35ms of data (of 50ms possible) // 10000, //100khz 70ms/500ms // 25000, //100khz 175ms/500ms of data // 50000, //100khz 350ms/500ms of data // 100000 //50khz 700ms/1000ms of data //}; void menu_handler() { button(); } 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) { toffset += 0.1 * s_div; btnpl = 0; } else if (btnmn == 1) { toffset -= 0.1 * s_div; btnmn = 0; } break; default: break; } if (btnbk == 1) { set_value = 0; btnbk = 0; btnok = 0; } } else { if (btnpl == 1) { opt++; if (opt > Single) { opt = 1; } //Serial.print("option : "); //Serial.println(opt); btnpl = 0; } if (btnmn == 1) { opt--; if (opt < 1) { opt = 9; } //Serial.print("option : "); //Serial.println(opt); btnmn = 0; } if (btnbk == 1) { hide_menu(); btnbk = 0; } if (btnok == 1) { switch (opt) { case Autoscale: auto_scale = !auto_scale; break; case Vdiv: case Sdiv: case Offset: case TOffset: set_value = true; break; case Stop: stop = !stop; //Serial.print("Stop : "); //Serial.println(stop); 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 Probe: 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; } btnok = 0; } } } else { if (btnok == 1) { opt = 1; show_menu(); btnok = 0; } if (btnbk == 1) { if (info == true) { hide_all(); } else { info = true; } btnbk = 0; } if (btnpl == 1) { volts_index++; if (volts_index >= sizeof(voltage_division) / sizeof(*voltage_division)) { volts_index = 0; } btnpl = 0; v_div = voltage_division[volts_index]; } if (btnmn == 1) { tscale_index++; if (tscale_index >= sizeof(time_division) / sizeof(*time_division)) { tscale_index = 0; } btnmn = 0; s_div = time_division[tscale_index]; } } } void hide_menu() { menu = false; } void hide_all() { menu = false; info = false; } void show_menu() { menu = true; } String strings_vdiv() { return ""; } String strings_sdiv() { return ""; } String strings_offset() { return ""; } String strings_toffset() { return ""; } String strings_freq() { return ""; } String strings_peak() { return ""; } String strings_vmax() { return ""; } String strings_vmin() { return ""; } String strings_filter() { return ""; }