使用Python API在LCD屏幕上循环文本打印

使用Python API在LCD屏幕上循环文本打印,python,Python,我在我的Raspberry Pi上连接了一个20*4的LCD屏幕。它起作用了 现在我想筛选几个句子并循环它们 多亏了Hapex,我才有了一个代码,但它并不是我想要的。我不能时不时地停下来清理 以下是实际代码: def typewriter_like(sentence, lcd_line, delay=0.7): for i,letter in enumerate(sentence): lcd_byte(lcd_line, LCD_CMD) lcd_

我在我的Raspberry Pi上连接了一个20*4的LCD屏幕。它起作用了

现在我想筛选几个句子并循环它们

多亏了Hapex,我才有了一个代码,但它并不是我想要的。我不能时不时地停下来清理

以下是实际代码:

  def typewriter_like(sentence, lcd_line, delay=0.7):
      for i,letter in enumerate(sentence):
      lcd_byte(lcd_line, LCD_CMD)
          lcd_string(sentence[:i+1],1)
      time.sleep(delay)

  mots = (("EXAMPLE", "EXAMPLES", "EXAMPLESS", "EXAMPLESSS"),
          ("ONE", "TWO", "THREE", "FOUR"),
          ("LULU", "FIFI", "RIRI", "TATA"))
  lcds = (0x80, 0xC0, 0x94, 0xD4)
  list(zip(mots,lcds))
  [(('EXAMPLE', 'EXAMPLES', 'EXAMPLESS', 'EXAMPLESSS'),128),(('ONE', 'TWO', 'THREE','FOUR'),192),(('LULU', 'FIFI', 'RIRI', 'TATA'),148)]

  while True:
    for mot in mots:
        for word, lcd in zip(mot, lcds):
            typewriter_like(word, lcd)
    time.sleep(10)

    for lcd in lcds:
            lcd_byte(lcd, LCD_CMD)
            lcd_string("",2)

    time.sleep(4)
我想暂停前4个单词。。。然后清除所有内容(全部清除),然后再打印下4个单词

范例 例子 实例 例

保持打印10秒钟 然后一切都清除了

一个 两个 三 四


有人能帮我吗?

这不是缩进的问题吗? while循环和def typewriter在同一级别上,因此typewriter被递归调用

def typewriter_like(sentence, lcd_line, delay=0.7):
      for i,letter in enumerate(sentence):
      lcd_byte(lcd_line, LCD_CMD)
         lcd_string(sentence[:i+1],1)
      time.sleep(delay)

mots = (("EXAMPLE", "EXAMPLES", "EXAMPLESS", "EXAMPLESSS"),
         ("ONE", "TWO", "THREE", "FOUR"),
         ("LULU", "FIFI", "RIRI", "TATA"))
lcds = (0x80, 0xC0, 0x94, 0xD4)

while True:
  for mot, lcd in zip(mots, lcds):
      typewriter_like(mot, lcd)
      time.sleep(10)

您的第二个代码存在的问题是对mot的
行的误解,即zip中的lcd(mot,lcd):
。您正在用单词和十六进制数字压缩整个元组,但您希望用一个数字压缩每个单词

打开python解释器并查看以下结果:

>>> mots = (("EXAMPLE", "EXAMPLES", "EXAMPLESS", "EXAMPLESSS"),
         ("ONE", "TWO", "THREE", "FOUR"),
       ("LULU", "FIFI", "RIRI", "TATA"))
>>> lcds = (0x80, 0xC0, 0x94, 0xD4)
>>> list(zip(mots, lcds))
[(('EXAMPLE', 'EXAMPLES', 'EXAMPLESS', 'EXAMPLESSS'), 128), (('ONE', 'TWO', 'THREE', 'FOUR'), 192), (('LULU', 'FIFI', 'RIRI', 'TATA'), 148)]
解决方案是在
mots
上循环,并在zip上嵌套循环

for mot in mots:
    for word, lcd in zip(mot, lcds):
        typewriter_like(word, lcd)

函数
typewriter\u like
的第一个参数应该是字符串,而不是元组

要在打印当前4行后暂停显示10秒,请将循环修改为以下内容:

for mot in mots:
    for word, lcd in zip(mot, lcds):
        typewriter_like(word, lcd)
    time.sleep(10)

我试过了,并且编辑了我的帖子。。。但仍然是一个error@NicoLune您正在做的是
typewriter\u like(mot,lcd)
,但它应该是
typewriter\u like(word,lcd)
,请注意变量
word
,而不是
mot
,作为第一个参数。还有第二个错误:
zip(mot,LCD)
而不是
zip(mot,LCD)
。注意单数而不是复数(谢谢),但我想暂停每4个单词。。。“示例”、“示例”、“示例性”、“示例性”。。。暂停。。。然后一切都被清除了。。。“一”、“二”、“三”、“四”。。。暂停。。。变明朗。。。所以有一个。。。这可能吗?有人能把我安排在右边吗tracks@NicoLune我编辑了我的答案,并添加了我认为应该有效的代码,但我看不出任何区别:单词仍然在循环,没有停顿,在下次出现之前没有被清除