can somebody explain to me about this mcp3002 library used in analog to digital conversion?? It has some connection to my first question here.
# botbook_mcp3002.py - read analog values from mcp3002 # (c) BotBook.com - Karvinen, Karvinen, Valtokari # Installing spidev: # sudo apt-get update # sudo apt-get -y install git python-dev # git clone https://github.com/doceme/py-spidev.git # cd py-spidev/ # sudo python setup.py install import spidev # installation help in botbook_mcp3002.py comments import time def readAnalog(device = 0,channel = 0): assert device in (1, 0) assert channel in (1, 0) #open spi spi = spidev.SpiDev() spi.open(0, device) """ Protocol start bit (S), sql/diff (D), odd/sign (C), MSBF (M) Use leading zero for more stable clock cycle 0000 000S DCM0 0000 0000 0000 Sending 3 8bit packages so xpi.xfer2 will return the same amount. start bit = 1 sql/diff = 1 SINGLE ENDED MODE (2 channel mode) odd/sign = channel 0/1 MSBF = 0 """ command = [1, (2 + channel) << 6, 0] #2 + channel shifted 6 to left #10 or 11 << 6 = 1000 0000 or 1100 0000 reply = spi.xfer2(command) """ Parse right bits from 24 bit package (3*8bit) We need only data from last 2 bytes. And there we can discard last two bits to get 10 bit value as MCP3002 resolution is 10bits Discard reply byte and start from reply where our data starts """ value = reply & 31 #31 = 0001 1111 with & operation makes sure that we have all data from XXXX DDDD and nothing more. 0001 is for signed in next operation. value = value << 6 #Move to left to make room for next piece of data. #000D DDDD << 6 = 0DDD DD00 0000 #Now we get the last of data from reply value = value + (reply >> 2) #Here we discard last to bits #DDDD DDXXX >> 2 = 00DD DDDD #0DDD DD00 0000 + 00DD DDDD = 0DDD DDDD DDDD spi.close() return value def main(): #read channel 0 on device 0 value = readAnalog(0, 0) print value time.sleep(10) if __name__ == "__main__": main()
my question here is how do I change the value of "device" and "channel" so I can operate two sensors on one MCP3002 chip from my raspberry pi?? Should I declare a new function to my sensor program?? Thank you.