I'm converting a vintage radio into a Raspberry Pi powered music player and I needed an analogue to digital converter (ADC) to allow my raspberry pi to read the old crusty switched and volume controls.
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
def __init__(self, bus = 0, device = 0, channel = 0):
self.bus, self.device, self.channel = bus, device, channel
self.spi = SpiDev()
adc = self.spi.xfer2([1, (8 + self.channel) << 4, 0])
data = ((adc & 3) << 8) + adc
def __exit__(self, type, value, traceback):
The class is really easy to use, using Python's 'with' statement to control it:
with MCP3008(channel = 0) as ch0:
The code is here - github.com/martinohanlon/mcp3008