--- /dev/null
+import sys
+import time
+sys.path.append('/home/pi/Adafruit_Micropython_Blinka/src')
+sys.path.append('/home/pi/Adafruit_Python_GPIO')
+sys.path.append('/home/pi/Adafruit_Python_PureIO')
+
+import board
+import digitalio
+import busio
+
+print("hello blinka!")
+
+i2c = busio.I2C(board.SCL, board.SDA)
+
+print("I2C devices found: ", [hex(i) for i in i2c.scan()])
+
+if not 0x18 in i2c.scan():
+ print("Didn't find MCP9808")
+ exit()
+
+def temp_c(data):
+ value = data[0] << 8 | data[1]
+ temp = (value & 0xFFF) / 16.0
+ if value & 0x1000:
+ temp -= 256.0
+ return temp
+
+while True:
+ i2c.writeto(0x18, bytes([0x05]), stop=False)
+ result = bytearray(2)
+ i2c.readfrom_into(0x18, result)
+ print(temp_c(result))
+ time.sleep(0.5)
import time
sys.path.append('/home/pi/Adafruit_Micropython_Blinka/src')
sys.path.append('/home/pi/Adafruit_Python_GPIO')
+sys.path.append('/home/pi/Adafruit_Python_PureIO')
import board
import digitalio
print("hello blinka!")
-
i2c = busio.I2C(board.SCL, board.SDA)
-print([hex(i) for i in i2c.scan()])
+print("I2C devices found: ", [hex(i) for i in i2c.scan()])
+
+if not 0x18 in i2c.scan():
+ print("Didn't find MCP9808")
+ exit()
-led = digitalio.DigitalInOut(board.D4)
-led.direction = digitalio.Direction.OUTPUT
-led.value = True
+def temp_c(data):
+ value = data[0] << 8 | data[1]
+ temp = (value & 0xFFF) / 16.0
+ if value & 0x1000:
+ temp -= 256.0
+ return temp
+while True:
+ i2c.writeto(0x18, bytes([0x05]), stop=False)
+ result = bytearray(2)
+ i2c.readfrom_into(0x18, result)
+ print(temp_c(result))
+ time.sleep(0.5)
-import smbus
+import Adafruit_PureIO.smbus as smbus
import time
class I2C:
raise RuntimeError("I2C Bus #%d not found, check if enabled in config!" % bus_num)
def scan(self):
+ """Try to read a byte from each address, if you get an OSError it means the device isnt there"""
found = []
- for addr in range(0,0x7F):
+ for addr in range(0,0x80):
try:
self._i2c_bus.read_byte(addr)
except OSError:
continue
found.append(addr)
return found
+
+ def writeto(self, address, buffer, stop=True):
+ self._i2c_bus.write_i2c_block_data(address, buffer[0], buffer[1:])
+
+ def readfrom_into(self, address, buffer, stop=True):
+ readin = self._i2c_bus.read_bytes(address, len(buffer))
+ for i in range(len(buffer)):
+ buffer[i] = readin[i]