如何在python中为PWM控制的LED衰落计算对数值?

时间:2018-09-28 19:26:16

标签: python raspberry-pi pwm

这是我使用软件PWM通过RPI进行LED褪色的尝试:

import time
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BOARD)
GPIO.setwarnings(False)

# set up GPIO pin for output
GPIOPin = 7
GPIO.setup(GPIOPin, GPIO.OUT)

# initialize PWM variable
RPWM = GPIO.PWM(GPIOPin, 100)

# start LED fading
RPWM.start(0)
try:
    while 1:
        for dc in range(0, 101, 5):
            RPWM.ChangeDutyCycle(dc)
            time.sleep(0.1)
        for dc in range(100, -1, -5):
            RPWM.ChangeDutyCycle(dc)
            time.sleep(0.1)
except KeyboardInterrupt:
    pass
    RPWM.stop()
    GPIO.cleanup()

但是我想做对数淡入淡出,以使淡入淡出过程看起来对人眼呈线性。

所以我发现类似y = pow(2, log2(b) * (x+1) / a) - 1的东西,其中a是步数,b是pwm的分辨率。

但是我认为这不是正确的选择。

1 个答案:

答案 0 :(得分:0)

主要问题是您只有100步衰落-甚至没有8位(256步)。

由于我是初学者,所以尝试了此方法:

scala> df.select(cols.map(col): _*).show
<console>:34: error: type mismatch;
 found   : String => org.apache.spark.sql.Column
 required: org.apache.spark.sql.Column => ?
       df.select(cols.map(col): _*).show

我以前用C做过16位衰落。有一篇关于该问题的文章,但其内容为德文: LED PWM fading