![](/img/trans.png)
[英]Raspberry Pi 3B and RFID RC522 - Python TypeError
[英]python code for mcp3202 b connected to raspberry pi 2
下面给出的是连接到树莓派的10位adc(mcp3002)的python代码。 使用12位ADC(mcp3202-b)的代码时,我应该进行哪些更改?
如果有人也会向我解释此代码,这将非常有帮助。
提前致谢。
def readadc(adcnum, clockpin, mosipin, misopin, cspin):
if ((adcnum > 1) or (adcnum < 0)):
return -1
GPIO.output(cspin, True)
GPIO.output(clockpin, False) # start clock low
GPIO.output(cspin, False) # bring CS low
commandout = adcnum << 1;
commandout |= 0x0D # start bit + single-ended bit + MSBF bit
commandout <<= 4 # we only need to send 4 bits here
for i in range(4):
if (commandout & 0x80):
GPIO.output(mosipin, True)
else:
GPIO.output(mosipin, False)
commandout <<= 1
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout = 0
# read in one null bit and 10 ADC bits
for i in range(11):
GPIO.output(clockpin, True)
GPIO.output(clockpin, False)
adcout <<= 1
if (GPIO.input(misopin)):
adcout |= 0x1
GPIO.output(cspin, True)
adcout /= 2 # first bit is 'null' so drop it
return adcout
您可能可以尝试更改以下行:
for i in range(11):
至
for i in range(13):
还使用xrange代替range会更好。
在循环中,您读取GPIO引脚10次并捕捉其值。 adcout
向左移动( <<=
( ilshift
是整数左移),在下一个(LSB)位填充零。 因此,在一开始的adcout
是二进制的0b1
,然后0b10
, 0b100
, 0b1000
, 0b10000
等(假设只有第一个位被设置)。 如果给定的引脚设置为1,则可以将最近附加的0切换为1。 这就是读取值的方式。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.