Python for循环访问GPIO引脚

3

我刚接触Python和Raspberry Pi。我试图缩短我的代码,并使用for循环来处理重复的部分,比如将所有引脚改为高电平或低电平。

我想使用for循环来访问引脚。这是否可行?

import RPi.GPIO as GPIO
from time import sleep

R1=22
R2=10
R3=9
R4=11

GPIO.setup(R1, GPIO.OUT)
GPIO.setup(R2, GPIO.OUT)
GPIO.setup(R3, GPIO.OUT)
GPIO.setup(R4, GPIO.OUT)

for x in range(1, 5):
    print "We're on time %d" % (x)
    GPIO.output(R + %d % (x), GPIO.HIGH)
    sleep(1)
    GPIO.output(R + %d % (x), GPIO.LOW)
    sleep(1)

GPIO.cleanup()
2个回答

0

这种事情是可能的,但通常更好使用一个 list 或者 dict

pins = [22, 10, 9, 11]

for pin in pins:
    GPIO.setup(pin, GPIO.OUT)

for x in range(1, 5):
    GPIO.output(pins[x], GPIO.HIGH)
    sleep(1)
    GPIO.output(pins[x], GPIO.LOW)
    sleep(1)

那种事情是不可能的。他们试图动态创建一个变量名:R + '1',等等。 - Peter Wood
@PeterWood,他们只是尝试访问已经存在的变量,可以使用evalexec等方式实现(但并不好)。 - 101
我现在明白你的意思了。 - Peter Wood

0

你不能创建那样的变量名称。你必须拥有相同的变量名并更改它所指向的内容:

pins = [R1, R2, R3, R4]

for pin in pins:
    GPIO.setup(pin, GPIO.OUT)

for pin in pins:
    GPIO.output(pin, GPIO.HIGH)
    sleep(1)
    GPIO.output(pin, GPIO.LOW)
    sleep(1)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接