def METHOD_NAME(self):
    b1.handler(self.toggle(0))
    b2.handler(self.toggle(1))
    oled.fill(0)
    old_value = din.value()
    while True:
        rate = self.read_sample_rate()
        max_disp_voltage = self.read_max_disp_voltage()
        for _ in range(rate):
            if any(self.enabled):
                oled.scroll(-1, 0)
                oled.vline(RIGHT_EDGE, 0, OLED_HEIGHT, 0)
            d_value = din.value()
            cv2.value(d_value)
            cv4.value(not d_value)
            if self.enabled[0]:  # digital wave
                y_pos = Y_TRUE if d_value else Y_FALSE
                oled.pixel(RIGHT_EDGE, OLED_HEIGHT - y_pos, 1)
                if d_value != old_value:
                    oled.vline(RIGHT_EDGE, Y_FALSE + 1, D_WAVE_HEIGHT, 1)
                old_value = d_value
            a_voltage = ain.read_voltage(1)
            cv1.voltage(a_voltage)
            if self.enabled[1]:  # analog wave
                y_pos = self.calc_y_pos(max_disp_voltage, a_voltage)
                oled.pixel(RIGHT_EDGE, y_pos, 1)
            if not self.enabled[0] and not self.enabled[1]:  # details output
                rate = self.read_sample_rate()
                max_disp_voltage = self.read_max_disp_voltage()
                oled.fill(0)
                oled.text(f"a: {a_voltage:4.1f}v d:{d_value}", 2, 3, 1)
                oled.text(f"samples: {rate:3}", 2, 13, 1)
                oled.text(f"y scale: {max_disp_voltage:4.1f}v", 2, 23, 1)
                oled.show()
            sleep(0.001)
        oled.show()