使用python代码在lcd 20x4上创建自定义字符

使用python代码在lcd 20x4上创建自定义字符,python,raspberry-pi,Python,Raspberry Pi,我想用一些python代码在LCD 20x4上制作一个大字符 我以前用adafruit库在LCD 16x2上显示过一些数据和文本,但现在我试图在LCD 20x4上显示一个自定义字符,有点困惑。我认为下面的代码(来自adafruit库)对于创建自定义字符很有用,但我不知道如何使用它。有人能提供如何做到这一点的指导吗 def create_char(self, location, pattern): """Fill one of the first 8 CGRAM locations wi

我想用一些python代码在LCD 20x4上制作一个大字符

我以前用adafruit库在LCD 16x2上显示过一些数据和文本,但现在我试图在LCD 20x4上显示一个自定义字符,有点困惑。我认为下面的代码(来自adafruit库)对于创建自定义字符很有用,但我不知道如何使用它。有人能提供如何做到这一点的指导吗

 def create_char(self, location, pattern):
    """Fill one of the first 8 CGRAM locations with custom characters.
    The location parameter should be between 0 and 7 and pattern should
    provide an array of 8 bytes containing the pattern. E.g. you can easyly
    design your custom character athttp://www.quinapalus.com/hd44780udg.html
    To show your custom character use eg. lcd.message('\x01')
    """
    # only position 0..7 are allowed
    location &= 0x7
    self.write8(LCD_SETCGRAMADDR | (location << 3))
    for i in range(8):
        self.write8(pattern[i], char_mode=True)
def create_char(自身、位置、模式):
“”“用自定义字符填充前8个CGRAM位置之一。
位置参数应介于0和7之间,并且模式应为
提供包含模式的8字节数组。例如,您可以轻松
设计您的自定义角色athttp://www.quinapalus.com/hd44780udg.html
要显示自定义字符,请使用例如lcd.message(“\x01”)
"""
#仅允许位置0..7
位置&=0x7

self.write8(LCD_SETCGRAMADDR |)(位置使用链接中的工具生成模式,然后将十进制版本作为第二个参数中的列表传递给此函数,例如

lcd.create_char(1, [0,10,21,17,10,4,0])
将字符1定义为心脏。完成此操作后,可以在字符串中包含一个
\x01
,以打印该字符


正如文档中所暗示的,相同的想法适用于从0到7的任何字符代码。只需将
create_char()
的第一个参数替换为该范围内的另一个数字。

使用链接中的工具生成模式,然后将十进制版本作为第二个参数中的列表传递给此函数,例如

lcd.create_char(1, [0,10,21,17,10,4,0])
将字符1定义为心脏。完成此操作后,可以在字符串中包含一个
\x01
,以打印该字符


正如文档中所暗示的,相同的想法适用于从0到7的任何字符代码。只需将
create_char()
的第一个参数替换为该范围内的另一个数字。

出于某种原因,它只适用于我输入新行字符后

例如,
\n\x01
将打印我的字符
\x01
和任何没有先打印字符的变体\n都不会打印我的字符


不知道为什么。仅供参考,我正在使用20x4液晶显示器。

出于某种原因,它只在我输入新行字符后对我有效

例如,
\n\x01
将打印我的字符
\x01
和任何没有先打印字符的变体\n都不会打印我的字符


不知道为什么。仅供参考,我使用的是20x4 LCD。

如何将该字符打印到LCD 16x2?你能给我一个例子吗?我已经尝试过了,并给我一个错误“Indexer:列表索引超出范围”哦,看起来库需要5x8。在列表末尾添加一个额外的
0
。如何将该字符打印到lcd 16x2?你能给我一个例子吗?我已经尝试过了,并给我一个错误“Indexer:列表索引超出范围”。哦,看起来库需要5x8。在列表末尾添加一个额外的
0