Pi-Lite LED矩阵板自定义精灵示例

4

Pi-Lite LED矩阵板在我以前关于Pi-Lite的帖子中,我解释了 如何设置 以及你怎么能 在Python中显示滚动文本。在这篇文章中,我将解释如何创建自定义14×9张图片,然后将其发送到Pi-Lite。这与用于在右侧创建“吃豆人”图像的技术相同。

Pi-Lite具有帧缓冲器功能,可让您向其发送数据,以确定每个LED的状态。您可以将每个LED设置为开或关,一旦收到所有数据,Pi-Lite就会按照指示设置LED。

该命令是一个由126个1和0组成的字符串。该字符串定义左上角的LED,然后在第一列下移。然后定义第二个,依此类推,直到所有126个LED都设置为1或0。

示例Python脚本

这是一个示例Python脚本,该脚本定义了两个精灵,先显示它们,然后退出。

#!/usr/bin/env 蟒蛇

import sys
import serial
import time

# Define two sprites
sprite1 = '000000000000000000000011110000100010111001001100100101010010101010010101100100101111001001000100010000011110000000000000000000'
sprite2 = '000000000000000000000000000000011111011111111111111111110011111110011111111111111011111111000011111000000000000000000000000000'

# Configure Pi serial port
s = serial.Serial()
s.baudrate = 9600
s.timeout = 0
s.port = "/dev/ttyAMA0"

try:
    # Open serial port
    s.open()
except serial.SerialException, e:
    # 那里 was an error
    sys.stderr.write("could not open port %r: %s\n" % (port, e))
    sys.exit(1)

print "Serial port ready"

# Clear 显示
s.write("$$$ALL,OFF\r")

# Send Sprite 1 to the Pi-Lite
print "Sprite 1"
s.write('$$$F' + sprite1 + '\r')

# Short delay
time.sleep(2)

# Send Sprite 2 to the Pi-Lite
print "Sprite 2"
s.write('$$$F' + sprite2 + '\r')

# Short delay
time.sleep(2)

# Quit
print "Good bye"

126个字符的精灵字符串具有“$$$F”开头添加了回车符,末尾添加了回车符以形成完整的Pi-Lite命令。该命令通过Pi发送到Pi-Lite’的串口使用“s.write”命令,就像我们在滚动文本示例中所做的一样。

两帧动画示例

在下面的示例中,使用Python列表定义了两个框架。我们可以响应用户按下Enter来显示paddlock [0]和paddlock [1]。它使用与上述相同的技术将帧发送到Pi-Lite,但这一次是在While循环中。

第一帧是简单的挂锁图像。第二个框架是未锁定的挂锁。

#!/usr/bin/env 蟒蛇
import sys
import serial
import time

# Define 挂锁 list containing two sprites
padlock = ['000000000000000000000000000000011111011111111111111111110011111110011111111111111011111111000011111000000000000000000000000000',
            '011100000111100000110000000110011111111111111011111111000011111000011111000011111000011111000011111000000000000000000000000000']

# Define list to describe each sprite
description = ['Locked','Unlocked']

# Configure Pi serial port
s = serial.Serial()
s.baudrate = 9600
s.timeout = 0
s.port = "/dev/ttyAMA0"

try:
    # Open serial port
    s.open()
except serial.SerialException, e:
    # 那里 was an error
    sys.stderr.write("could not open port %r: %s\n" % (port, e))
    sys.exit(1)

print "Serial port ready"

# Clear 显示
s.write("$$$ALL,OFF\r")

# Initialise some variables
loop  = True
frame = 0

while loop:

    写('$$$F' + 挂锁[frame]+ '\r')
    print description[frame]inp = raw_input("Press [Enter] to toggle 挂锁. [x-Enter] to quit.")

    if inp.lower()!="x":
      # Toggle frame to 显示
      frame = 1 - frame
    else:
      # Exit loop
      loop = False

# Quit
print "Good bye"

您可以在没有任何用户干预的情况下将帧发送到Pi-Lite,或者将自定义精灵与滚动文本结合在一起。可能性是无止境。

精灵创建的简单方法

思考精灵并输入126个字符’容易。在方格纸上画出来没有’使其变得更容易。因此,为了加快该过程,我创建了一个在线工具,该工具可让您使用鼠标绘制图片。 126个字符串将自动生成,然后您可以将其粘贴到Python脚本中。

工具’的界面看起来像这样:

Pi-Lite精灵生成器

点击图片访问 精灵工具。我用它来创建上面的Python示例中使用的精灵。通过一些想象和实验,您可以创建一些有趣的设计和动画。

创建您自己的图像,并将文本框内容剪切-粘贴到示例脚本中。您始终可以构建更大的Python列表来存储更多帧。

尽管Pi-Lite的尺寸有限,但这是使用Raspberry Pi创建显示系统的好方法。它’能够创建自己的子画面并将它们与滚动文本结合在一起,而只需最少的代码或硬件,这非常好。

脚本下载

除了剪切上面的代码,您还可以使用以下命令将这两个脚本直接下载到您的Pi:

wget //bitbucket.org/MattHawkinsUK/rpispy-pi-lite/raw/master/pi_lite_custom_1.py

和:

wget //bitbucket.org/MattHawkinsUK/rpispy-pi-lite/raw/master/pi_lite_custom_2.py

或者,如果您在Pi上使用Git,则可以通过在BitBucket上克隆我的Pi-Lite存储库来获取我的所有Pi-Lite示例脚本:

git clone //bitbucket.org/MattHawkinsUK/rpispy-pi-lite.git
分享。

4条留言

发表评论

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.