使用Python API在LCD屏幕上循环文本打印
我在我的Raspberry Pi上连接了一个20*4的LCD屏幕。它起作用了 现在我想筛选几个句子并循环它们 多亏了Hapex,我才有了一个代码,但它并不是我想要的。我不能时不时地停下来清理 以下是实际代码:使用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_
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我编辑了我的答案,并添加了我认为应该有效的代码,但我看不出任何区别:单词仍然在循环,没有停顿,在下次出现之前没有被清除