玩弄Raspberry Pi来播放Bad Apple

最近在期末考试, 有些无聊, 忽然想起家中还有一块全新的Raspberry Pi, 就决定用它来做一些什么东西。

之前做传感器, 用到了LCD(液晶显示)模块, 觉得这个还可以用在Raspberry Pi上面, 就开始设法通过Raspberry Pi来让LCD播放Bad Apple视频。

至于为什么是Bad Apple, FB做了个OS播放的Bad Apple, 44用点阵播放的Bad Apple, 某人调戏任务管理器播放的Bad Apple, 还有很多很多人播放的是Bad Apple。

首先, 这块LCD还是比较便宜的, 15.8元一个, 分辨率是128×64, 还是能满足我的要求的:)

我是在这里购买的, 如果你发现了更便宜更好用的请告诉我。

它和上位机通过”半个”SPI总线来通讯。

“半个”的原因是它不需要用到MISO这根线(字库版本需要用到这根线来发送字模信息)。

具体的信息可以参见它的datasheet。

主要就是写”显存”(我不知道”显存”用在这里是否恰当):

首先, 整块屏幕被分为8个page, 每个page对应屏幕中一个128×8的部分, 从上到下依次为page0~page7。

每个page中, 从左到右分为128个列, 每个列中恰好有8个像素, 自然, 就是一字节了。

这个字节对应的一列像素中, 从上到下依次为字节的第0位~第7位。

于是, 只需要确定写到哪个page以及从第几列开始写, 就可以很好的写显存了。

这个LCD还有CS、RST、AO三根线, 我使用Raspberry Pi的GPIO来操作。

实际上, SPI也可以用GPIO来模拟, 效果也不会很差(之前做的一个低功耗传感器就是手动模拟的I²C), 既然有硬件支持, 那就不造轮子了XD。

于是, 今天查阅了Raspberry Pi的GPIO和Raspberry Pi的SPI的资料。

顺便找到了一份比较高质量的Bad Apple视频, 并把它处理成了完全黑白两色的图像。

在处理图像的时候用的是Python Image Library, 十分好用。

另外, 在我大致实现播放之后的测试环节中, 发现FPS十分的小, 也就是显示出来十分的卡。

而仅仅注释掉输出数据到LCD的语句, 就能使得FPS增加很多。

我就开始设法减小传送到LCD的数据量, 使用了十分简单的差量传输(就是只传输改变的部分), 这样FPS会总体得到提高, 但是十分的不稳定。

效果还不错。

PS. 结合Pi Camera玩耍, 还可以作为超级简陋的摄像头预览。

发表评论?

1 条评论。

发表评论

注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)

本文链接:https://twd2.me/archives/6051QrCode