Skip to content

Instantly share code, notes, and snippets.

@aolkin
Last active April 1, 2024 02:13
Show Gist options
  • Save aolkin/6d510aee6f0a375ffe85 to your computer and use it in GitHub Desktop.
Save aolkin/6d510aee6f0a375ffe85 to your computer and use it in GitHub Desktop.

Revisions

  1. aolkin renamed this gist Apr 1, 2024. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. aolkin revised this gist Mar 1, 2016. 1 changed file with 8 additions and 4 deletions.
    12 changes: 8 additions & 4 deletions melexis.py
    Original file line number Diff line number Diff line change
    @@ -10,12 +10,17 @@ def __init__(self, addr=0x5A, fahrenheit=False):
    def readAmbient(self):
    return self._readTemp(0x06)

    def readObject1(self):
    def readObject(self):
    return self._readTemp(0x07)

    def readObject2(self):
    return self._readTemp(0x08)

    def getDifference(self):
    """Returns how much warmer the object is than the ambient
    temperature."""
    return self.readObject() - sensor.readAmbient()

    def _readTemp(self, reg):
    temp = self._i2c.readS16(reg)
    temp = temp * .02 - 273.15
    @@ -26,7 +31,6 @@ def _readTemp(self, reg):

    if __name__ == "__main__":
    sensor = Melexis(fahrenheit=True)
    t = sensor.readObject1()
    a = sensor.readAmbient()
    t = sensor.readObject()
    print("Object: {}ºF ({}ºF warmer than the ambient temperature)".format(
    round(t, 3), round(t - a, 3)))
    round(t, 3), round(sensor.getDifference(), 3)))
  3. aolkin created this gist Mar 1, 2016.
    3 changes: 3 additions & 0 deletions README.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,3 @@
    Note that the following code must be run at every boot for this to work, because of the repeated-start requirement:

    `sudo su -c 'echo "Y" > /sys/module/i2c_bcm2708/parameters/combined'`
    32 changes: 32 additions & 0 deletions melexis.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    #!/usr/bin/env python3

    from adafruit.i2c import Adafruit_I2C

    class Melexis:
    def __init__(self, addr=0x5A, fahrenheit=False):
    self._i2c = Adafruit_I2C(addr)
    self.mode = fahrenheit

    def readAmbient(self):
    return self._readTemp(0x06)

    def readObject1(self):
    return self._readTemp(0x07)

    def readObject2(self):
    return self._readTemp(0x08)

    def _readTemp(self, reg):
    temp = self._i2c.readS16(reg)
    temp = temp * .02 - 273.15
    if self.mode:
    return (temp * 9 / 5) + 32
    else:
    return temp

    if __name__ == "__main__":
    sensor = Melexis(fahrenheit=True)
    t = sensor.readObject1()
    a = sensor.readAmbient()
    print("Object: {}ºF ({}ºF warmer than the ambient temperature)".format(
    round(t, 3), round(t - a, 3)))