raspberry-pi3 - 如何更改 2x16 LCD 显示器的背光颜色
问题描述
我正在使用带有 Raspberry Pi 3 的 2x16 LCD 显示器和 16 个接头引脚。为了显示我安装并配置了 Adafruit Char LCD 库的消息。它工作正常。
目前默认背光颜色为黄色,所以我想将其更改为其他颜色,如蓝色、红色。为此,我从 Adafruit char LCD 库中导入的Adafruit_RGBCharLCD
类Adafruit_RGBCharLCD
如下
class Adafruit_RGBCharLCD(Adafruit_CharLCD):
"""Class to represent and interact with an HD44780 character LCD display with
an RGB backlight."""
def __init__(self, rs, en, d4, d5, d6, d7, cols, lines, red, green, blue,
gpio=GPIO.get_platform_gpio(),
invert_polarity=True,
enable_pwm=False,
pwm=PWM.get_platform_pwm(),
initial_color=(1.0, 1.0, 1.0)):
"""Initialize the LCD with RGB backlight. RS, EN, and D4...D7 parameters
should be the pins connected to the LCD RS, clock enable, and data line
4 through 7 connections. The LCD will be used in its 4-bit mode so these
6 lines are the only ones required to use the LCD. You must also pass in
the number of columns and lines on the LCD.
The red, green, and blue parameters define the pins which are connected
to the appropriate backlight LEDs. The invert_polarity parameter is a
boolean that controls if the LEDs are on with a LOW or HIGH signal. By
default invert_polarity is True, i.e. the backlight LEDs are on with a
low signal. If you want to enable PWM on the backlight LEDs (for finer
control of colors) and the hardware supports PWM on the provided pins,
set enable_pwm to True. Finally you can set an explicit initial backlight
color with the initial_color parameter. The default initial color is
white (all LEDs lit).
You can optionally pass in an explicit GPIO class,
for example if you want to use an MCP230xx GPIO extender. If you don't
pass in an GPIO instance, the default GPIO for the running platform will
be used.
"""
super(Adafruit_RGBCharLCD, self).__init__(rs, en, d4, d5, d6, d7,
cols,
lines,
enable_pwm=enable_pwm,
backlight=None,
invert_polarity=invert_polarity,
gpio=gpio,
pwm=pwm)
self._red = red
self._green = green
self._blue = blue
# Setup backlight pins.
if enable_pwm:
# Determine initial backlight duty cycles.
rdc, gdc, bdc = self._rgb_to_duty_cycle(initial_color)
pwm.start(red, rdc)
pwm.start(green, gdc)
pwm.start(blue, bdc)
else:
gpio.setup(red, GPIO.OUT)
gpio.setup(green, GPIO.OUT)
gpio.setup(blue, GPIO.OUT)
self._gpio.output_pins(self._rgb_to_pins(initial_color))
def _rgb_to_duty_cycle(self, rgb):
# Convert tuple of RGB 0-1 values to tuple of duty cycles (0-100).
red, green, blue = rgb
# Clamp colors between 0.0 and 1.0
red = max(0.0, min(1.0, red))
green = max(0.0, min(1.0, green))
blue = max(0.0, min(1.0, blue))
return (self._pwm_duty_cycle(red),
self._pwm_duty_cycle(green),
self._pwm_duty_cycle(blue))
def _rgb_to_pins(self, rgb):
# Convert tuple of RGB 0-1 values to dict of pin values.
red, green, blue = rgb
return { self._red: self._blpol if red else not self._blpol,
self._green: self._blpol if green else not self._blpol,
self._blue: self._blpol if blue else not self._blpol }
def set_color(self, red, green, blue):
"""Set backlight color to provided red, green, and blue values. If PWM
is enabled then color components can be values from 0.0 to 1.0, otherwise
components should be zero for off and non-zero for on.
"""
if self._pwm_enabled:
# Set duty cycle of PWM pins.
rdc, gdc, bdc = self._rgb_to_duty_cycle((red, green, blue))
self._pwm.set_duty_cycle(self._red, rdc)
self._pwm.set_duty_cycle(self._green, gdc)
self._pwm.set_duty_cycle(self._blue, bdc)
else:
# Set appropriate backlight pins based on polarity and enabled colors.
self._gpio.output_pins({self._red: self._blpol if red else not self._blpol,
self._green: self._blpol if green else not self._blpol,
self._blue: self._blpol if blue else not self._blpol })
def set_backlight(self, backlight):
"""Enable or disable the backlight. If PWM is not enabled (default), a
non-zero backlight value will turn on the backlight and a zero value will
turn it off. If PWM is enabled, backlight can be any value from 0.0 to
1.0, with 1.0 being full intensity backlight. On an RGB display this
function will set the backlight to all white.
"""
self.set_color(backlight, backlight, backlight)
我正在尝试lcd.set_color()
按如下方式使用,但它不起作用。
import time
from Adafruit_CharLCD import Adafruit_RGBCharLCD
# instantiate lcd and specify pins
lcd = Adafruit_RGBCharLCD(rs=26, en=19,
d4=13, d5=6, d6=5, d7=11,
cols=16, lines=2,red=True,Green=True,Blue=True)
lcd.clear()
#setting backlight color as blue
lcd.set_color(0,0,100)
# display text on LCD display \n = new line
lcd.message('2x16 CharLCD\n Raspberry Pi')
我正在使用 4 位节点,将最后两个作为背光引脚的引脚连接到树莓派 gpio 引脚,如下所示:
背光引脚
15 LED+ or A Pin No 2 of GPIO(5v Power)
16 LED- or K Pin No 6 of GPIO(GND)
请帮我将自定义颜色设置为背光,因为我对这一切都不熟悉。
解决方案
如果您的显示器有用于背光 (LED) 的引脚,则您只能打开和关闭背光,除非有一些电压调节可用,我对此表示怀疑。通常基于 HD44780 芯片的显示器不支持背光颜色变化。您只能将其打开和关闭。
推荐阅读
- javascript - 为什么一个包含单个数字的数组被认为是一个数字?
- python - 如何从 Pandas Dataframe 中的 n 个行列表中创建组合标题行
- groovy - 如何使用 groovy 从字符串 1,398.90 中删除逗号
- python - Pygame矩形没有被绘制
- linux - 如何使用带有 Perl -e 参数的 cat 读取文件?
- c# - 如何为“Visual Studio emulator for android”的模拟器安装证书?
- c - 测试迭代指针之间的关系是否安全?
- mysql - 从存储过程中的 select 语句查询中调用另一个存储过程
- bash - 将 memcache 命令的输出分配给 shell/bash 脚本中的变量
- node.js - Mongo 查询,查找字符串是否存在于数组中