跳转到主要内容

一个用于计算CIE 1931亮度表的微型库,用于人眼友好的PWM LED亮度。

项目描述

pwm_lightness模块

生成适合人眼视觉感知的LED亮度的亮度校正表。

Antialiased question mark in portrait mode on a CharlieWing

想要让你的闪烁LED平滑渐变吗?想给LED矩阵字体添加抗锯齿效果吗?使用这个库来校正你的原始线性亮度值,以适应人眼视觉感知的持续性。

这种调整通常被称为 CIE 1931亮度曲线。它也被许多书籍所涵盖。这项研究是在20世纪20年代进行的,最终成为国际照明委员会(CIE)1931标准的一部分。

此模块可以在CircuitPython(以及如果你启用浮点运算构建的MicroPython)上工作。在微控制器环境中,重新计算设备上的表通常过度。使用此库预先计算所需的表并存储为数据,以节省宝贵的RAM。

平滑渐变LED

此示例假设使用 CircuitPythonadafruit-blinka

import time, board, pulseio, pwm_lightness
PWM = pwm_lightness.get_pwm_table(0xffff, max_input=100)
output_pin = pulseio.PWMOut(board.D13)
while True:
    for v in range(100, -1, -1):
        output_pin.duty_cycle = PWM[v]
        time.sleep(0.02)
    for v in range(1, 100):
        output_pin.duty_cycle = PWM[v]
        time.sleep(0.02)

它同样适用于您发送到可编程LED灯带的RGB值。

改善抗锯齿字体或其他8位图像

如下所示使用 Pillow 来让抗锯齿字体更加闪耀,而不是看起来像粗体模糊。
此示例假设一个连接到 I2C Adafruit charlieplexed LED矩阵 的RPi。

import pwm_lightness
PWM = pwm_lightness.get_pwm_table(60)  # 0..255 is our max LED PWM value.
import board, busio, adafruit_is31fl3731, PIL
i2c = busio.I2C(board.SCL, board.SDA)
led_matrix = adafruit_is31fl3731.CharlieBonnet(i2c)
font = PIL.ImageFont.truetype('fonts/RobotoCondensed-Regular.ttf', 16)
image = PIL.Image.new('L', (led_matrix.height, led_matrix.width), 0)
draw = PIL.ImageDraw.Draw(image)
# fill=255 gives us the most antialiasing detail to work with.  Control
# brightness using the max_output value passed to get_pwm_table() above.
draw.text((0,-1), '?', fill=255, font=font)
image = image.point(PWM)  # Corrects linear 0..255 values for PWM lightness.
image = image.transpose(PIL.Image.ROTATE_90)  # Match the matrix orientation.
led_matrix.image(image)  # Send pixels to our LED display.

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

此版本没有可用的源代码分发文件。请参阅生成分发存档的教程。

构建分发

pwm_lightness-1.0.1-py2.py3-none-any.whl (7.9 kB 查看哈希)

上传时间 Python 2 Python 3