The MCP3008 ADC is pretty cheap and easy to use with the Pi, so I bagged myself one.
Raspberry Pi Spy has got a really good tutorial on setting up an MCP3008 to read analogue sensors which I followed to get everything running, but the code didn't fit my needs so I created a python class for reading data from the MCP3008.
from spidev import SpiDev
class MCP3008:
def __init__(self, bus = 0, device = 0, channel = 0):
self.bus, self.device, self.channel = bus, device, channel
self.spi = SpiDev()
def __enter__(self):
self.open()
return self
def open(self):
self.spi.open(self.bus, self.device)
def read(self):
adc = self.spi.xfer2([1, (8 + self.channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
def __exit__(self, type, value, traceback):
self.close()
def close(self):
self.spi.close()
The class is really easy to use, using Python's 'with' statement to control it:
with MCP3008(channel = 0) as ch0:
print ch0.read()
The code is here - github.com/martinohanlon/mcp3008
No comments:
Post a Comment
Note: only a member of this blog may post a comment.