【问题标题】:write_analog in microPython on BBC micro:bit does not do anythingBBC micro:bit 上 microPython 中的 write_analog 不执行任何操作
【发布时间】:2017-08-07 06:46:54
【问题描述】:

我有一个简单的 micro:bit javascript 行,但 microPython 中的同一行没有。

我有一个电位器连接到 micro:bit,电位器的读数被发送到连接到 LED 的引脚,以控制 LED 的亮度。 javascript代码

        pins.analogWritePin(AnalogPin.P1, pins.analogReadPin(AnalogPin.P0))

这是块代码工作正常的结果,LED的亮度随着电位器的变化而变化。

但使用类似的 microPython 行

    pin1.write_analog(pin0.read_analog())

不会改变 LED 的强度。

对这里发生的事情有任何想法吗?

【问题讨论】:

  • 似乎对我有用,只是我总是在两个语句中使用它,一个用于读取,一个用于写入,这样如果我在非嵌入式系统上运行它,我就有机会调试它.

标签: javascript micropython bbc-microbit


【解决方案1】:

您的 micropython 代码行是独立的。孤立地,我可以进行 一次 读取和 一次 写入,结果按比例调暗连接到引脚 1 和接地的 LED,一次强>。但需要考虑上下文。

您是否在没有睡眠的情况下以紧密的循环重复执行该行(并且没有其他耗时的操作)?像这样?

#This will not work
from microbit import *
while True:
    pin1.write_analog(pin2.read_analog())

当我测试上述内容时,LED 无法变暗。只需在循环中添加 50-100 毫秒的睡眠即可解决此问题。

#This will work
from microbit import *
while True:
    pin1.write_analog(pin2.read_analog()) 
    sleep(50)

请注意,这与上述用户模拟的解决方案相同。

pin1.write_analog(v) 实际上并没有在引脚上设置模拟电压,它通过使用 PWM 波形来模拟它,该波形在其周期的一定百分比内为高电平,与您所需的“模拟”电压成正比,其余部分为低电平的周期。

我怀疑您在再次调用write_analog() 之前没有让该波形完成一个周期,因此您永远看不到整个波形。每次调用write_analog() 时,PWM 波形可能会再次以高电平重新开始 - 我不知道。如果是这样,则意味着您看到的波形一直被设置为高电平,因此只有 3.3v 恒定值。不是你想要的。

在调用相同的analog_write() 之间保持睡眠会让你得到你期望的调光。 (或者,找到另一种方法来避免如此频繁地调用analog_write()。)

也许您的 javascript 版本没有这个问题,因为它执行速度很慢,以至于在您再次更改之前让 PWM 波形重复。

请注意,您可以通过给它一个 1ms 的周期来加速 PWM 波形: pin1.set_analog_period(1)。在我的测试中,这在一定程度上有所改善,但不如简单地在调用write_analog 之间留出更多时间那样好的解决方案。您仍然需要在两次通话之间留出至少 1 毫秒的时间。

这里是关于 micro:bit IO 引脚和 PWM http://microbit-micropython.readthedocs.io/en/latest/pin.html的文档

【讨论】:

    【解决方案2】:

    我在 micro:bit 上运行了以下 micropython。我将引脚 0 连接到一侧带有电位计的电阻桥,这样我就可以改变引脚 0 上的电压。我将引脚 1 连接到 LED,并通过一个电阻串联到地。我还用 Fluke 万用表测量了引脚 0 和引脚 1 上的电压,它们匹配得很好。当我调整电位器时,我可以看到 LED 的强度发生变化。

    from microbit import *
    
    while True:
        pin1.write_analog(pin0.read_analog())
        sleep(100)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-11
      • 1970-01-01
      • 2020-07-30
      相关资源
      最近更新 更多