def get_ADC_value(bus, addr, channel):
    """
    This method selects a channel and initiates conversion
    The ADC operates at 240 SPS (12 bits) with 1x gain
        One shot conversions are used, meaning a wait period is needed
        in order to acquire new data. This is done via a constant poll
        of the ready bit.
    Upon completion, a ratiomeric value is returned to the caller.

    Usage - ADC_start(bus, SensorCluster.ADC_addr, channel_to_read)

    """
    if channel == 1:
        INIT = 128
    elif channel == 2:
        INIT = 160
    elif channel == 3:
        INIT = 192
    elif channel == 4:
        INIT = 224
    bus.write_byte(addr, INIT)
    data = bus.read_i2c_block_data(addr, 0, 3)
    status = (data[2] & 128) >> 7
    while status == 1:
        data = bus.read_i2c_block_data(addr, 0, 3)
        status = (data[2] & 128) >> 7
    sign = data[0] & 8
    val = (data[0] & 7) << 8 | data[1]
    if sign == 1:
        val = (val ^ 1023) + 1
    return float(val) / float(2047)
