我有这个代码运行并将GPIOS 7,11,13,15
设置为我的Raspberry Pi 2
HIGH
或LOW
所以我可以相应地寻址16个多路复用器通道,然后读取模拟电压通过和MCP3002 SPI
,如果有按键或键被释放,则返回,加上哪个键。这是代码:
def findpress(keypressed, keyreleased, key):
x=0
while True:
binary_x="{0:04b}".format(x)
GPIO.output(7, binary_x[0])
GPIO.output(11, binary_x[1])
GPIO.output(13, binary_x[2])
GPIO.output(15, Binary_x[3])
channeldata_1 = read_mcp3002(0) # get CH0 input
channeldata_2 = read_mcp3002(0) # get CH0 input
channeldata_3 = read_mcp3002(0) # get CH0 input
channeldata = (channeldata_1+channeldata_2+channeldata_3)/3
#
# Voltage = (CHX data * (V-ref [= 3300 mV] * 2 [= 1:2 input divider]) / 1024 [= 10bit resolution]
#
voltage = int(round(((channeldata * vref * 2) / resolution),0))+ calibration
if DEBUG : print("Data (bin) {0:010b}".format(channeldata))
if x==15 : # some problem with this sensor so i had to go and twicked the thresshold
voltage = voltage - 500
if voltage<=2500 and keyreleased==True:
return keypressed=True
return key=x+1
if voltage<=2500 and keyreleased==False
return keypressed=True
return key=x+1
if voltage>2500 and keypressed==True:
x=x+1
return keyreleased==True
if x == 15:
x=0
如何在main
中调用这些变量?
答案 0 :(得分:0)
您将三个参数传递给此函数,大概是来自主程序。
使用元组解包,只返回一个元组:
name
在您的代码中,您只需返回一些组合,例如:
print(foo(1, 2, 3)) # should print: 2, 4, 0
# unpacking the tuple like so:
x, y, z = foo(1,2,3)
print x, y, z
def foo(x, y, z):
x +=1
y +=2
z = 0
请注意,像这样的多个return语句将不会按预期执行,而不是按顺序返回两个值,它将在第一个return keypressed, keyreleased, key
之后停止:
return
另请注意,您目前正在实施的这种表示法将进行评估并返回真值:
return keypressed=True
return key=x+1 # This statement will NOT execute
如果这是您的意图,那么确定,否则您应该在返回语句之前进行分配。您的代码的工作方式,特别是您的返回语句看起来似乎没有意义,而且我并没有真正解决这些问题。