diff --git a/python/samples/mux.py b/python/samples/mux.py new file mode 100644 index 0000000..a240b89 --- /dev/null +++ b/python/samples/mux.py @@ -0,0 +1,40 @@ +import sys +from i2cdriver import I2CDriver, EDS + +# Using a TCA9548A Low-Voltage 8-Channel I2C Switch +# Three LM75B temperature sensors are connected to +# channels 0,1 and 2. All are at address 0x48. + +class Mux: + def __init__(self, i2, a = 0x70): + self.i2 = i2 + self.a = a + + def select(self, n): + assert n in range(8) + self.i2.start(self.a, 0) + self.i2.write([1 << n]) + self.i2.stop() + +if __name__ == '__main__': + i2 = I2CDriver(sys.argv[1]) + + mux = Mux(i2) + sensors = [ + (0, EDS.Temp(i2)), + (1, EDS.Temp(i2)), + (2, EDS.Temp(i2)) + ] + + # Reset all 8 channels + for chan in range(8): + mux.select(chan) + i2.reset() + + def read(chan, dev): + mux.select(chan) + celsius = dev.read() + return celsius + + while 1: + print(" ".join(["%.1f" % read(chan, dev) for chan,dev in sensors]))