使用参数 select 要切换的引脚

Use argument to select which pin to toggle

我有一块板,可以说是 20 个 LED,我想在短时间内独立闪烁。 与其将函数复制 20 次并将引脚的变量名调整为 flash 或使用长 if/else 梯形图,还有更好的解决方案吗?是否可以动态修改变量名(可能是个坏主意...)?

def flash(channel, pulse_length=100):
   pin_1.high()
   time.sleep_us(pulse_length)
   pin_1.low()

我想使用通道参数来实现类似 pin_"channel".toggle()

感谢您的意见!

可以 使用类似 globals()[ 'pin_' + str(number)] 的方式动态更改名称,但这非常丑陋且没有必要。

为了扩展评论,使用字典而不是列表,以便可以命名各个引脚,并合并 'toggle' func(请注意,如果引脚在 'flash' 之前打开,它将关闭然后重新打开),(ESP8266 上的 uPy 没有引脚。high/low)...

pin_dict = {
'red': pin_1,
'blue': pin_2,
'green': pin_3,
}

def toggle(pin):
    pin.value(not pin.value())

def flash(channel, pulse_length=100):
    pin = pin_dict[channel]
    toggle(pin)
    time.sleep_us(pulse_length)
    toggle(pin)

flash('red')

如果您更喜欢使用列表,请使用

pin_list = [pin_1, pin_2, pin_3...]

通道只是列表中引脚的索引 (flash(0))