如何在 main 中调用这些变量?
How can I call these variables in main?
我有这段代码运行并将 GPIOS 7,11,13,15
设置为我的 Raspberry Pi 2
HIGH
或 LOW
因此我可以相应地寻址 16 多路复用器通道,然后读取通过 MCP3002 SPI
和 returns 的模拟电压(如果有按键或释放的键,加上是哪个键)。这是代码:
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
中调用这些变量?
您正在向此函数传递三个参数,大概是来自主程序。
使用元组解包,只是return一个元组:
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 对两个值执行,它只会在第一个 return
之后停止:
return keypressed=True
return key=x+1 # This statement will NOT execute
另请注意,您当前正在实施的这种表示法将进行评估,return 一个真实值:
return keypressed=False # returns True if keypressed==False else False
如果这是您的意图,那么可以,但否则您应该在 return 语句之前进行 分配 。您的代码的工作原理,特别是您的 return 语句看起来没有意义,我不会真正解决这些问题。
我有这段代码运行并将 GPIOS 7,11,13,15
设置为我的 Raspberry Pi 2
HIGH
或 LOW
因此我可以相应地寻址 16 多路复用器通道,然后读取通过 MCP3002 SPI
和 returns 的模拟电压(如果有按键或释放的键,加上是哪个键)。这是代码:
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
中调用这些变量?
您正在向此函数传递三个参数,大概是来自主程序。
使用元组解包,只是return一个元组:
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 对两个值执行,它只会在第一个 return
之后停止:
return keypressed=True
return key=x+1 # This statement will NOT execute
另请注意,您当前正在实施的这种表示法将进行评估,return 一个真实值:
return keypressed=False # returns True if keypressed==False else False
如果这是您的意图,那么可以,但否则您应该在 return 语句之前进行 分配 。您的代码的工作原理,特别是您的 return 语句看起来没有意义,我不会真正解决这些问题。