用于循环访问GPIO引脚的Python



我是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()

这类事情是可能的,但通常使用listdict:更好

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)

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

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)

最新更新