之前已经实现过了,把OLED当作一个状态显示器。但是,仅仅显示文字肯定是不够炫酷的,因为有屏幕的地方就应该有Bad Apple。
这次我们尝试一下把OLED播放一下 Bad Apple.
Bad Apple看似是一段视频,但是我们这么来想这个问题。视频打散成很多张图片,按照每秒12贞的播放,那不就是一个视频了么。
首先,我们来体验一次把图片展示在OLED上面,需要展示的图片要是pbm格式(PBM格式由Jef Poskanzer在20世纪80年代发明,为了便于通过电子邮件,用ASCII码表示单色位图,能够承受一般的文本格式的变动。)

from ssd1306 import SSD1306_I2C ,framebuf
from machine import Pin, SoftI2C
oled = None
class BadAppleOled:def init_oled(self):global oledi2c = SoftI2C(sda=Pin(21), scl=Pin(22),freq=600000)i2c.scan() print(i2c)oled = SSD1306_I2C(128, 64, i2c)def show_pic(self):global oledshow_pbm = '/data/pyamp/example/pbm/rangcha.pbm'with open(show_pbm, 'rb') as f:f.readline()f.readline()data = bytearray(f.read()) fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)oled.fill(0)oled.blit(fbuf, 0,0)oled.show()del fbuf

调用代码

bad_apple_oled = BadAppleOled()
bad_apple_oled.init_oled()
bad_apple_oled.show_pic()

最终结果如下

代码解释:

  1. 首先将文件读取成二进制 with open(show_pbm, 'rb')
  2. 将文件转换成字节数组 data = bytearray(f.read())
  3. 将图片的字节数组送入 framebuf ,并指定大小。 fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)
  4. OLED 清屏, 并展示framebuf内容,展示完成后,删除 framebuf
oled.fill(0)
oled.blit(fbuf, 0,0)
oled.show()
del fbuf

完成了基础的图片展示后,我们尝试一下把一个视频文件的连续PNG转换成pbm并进行展示。

from ssd1306 import SSD1306_I2C ,framebuf
from machine import Pin, SoftI2C
import uos
oled = None
class BadAppleOled:def init_oled(self):global oledi2c = SoftI2C(sda=Pin(21), scl=Pin(22),freq=400000)i2c.scan() print(i2c)oled = SSD1306_I2C(128, 64, i2c)def show_pic(self):global oledshow_pbm = '/data/pyamp/example/pbm/rangcha.pbm'with open(show_pbm, 'rb') as f:f.readline()f.readline()data = bytearray(f.read()) fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)oled.fill(0)oled.blit(fbuf, 0,0)oled.show()del fbufdef bad_apple_v1(self):global oledbpm_files_list = uos.listdir('data/pyamp/example/bpm_files')for bpm_entity in bpm_files_list: show_bpm = '/data/pyamp/example/bpm_files/'+bpm_entity# print(show_bpm)with open(show_bpm, 'rb') as f:f.readline()f.readline()data = bytearray(f.read()) fbuf= framebuf.FrameBuffer(data,128,64, framebuf.MONO_HLSB)oled.fill(0)oled.blit(fbuf, 0,0)oled.show()del fbuf

但是,一般视屏都会很长的,不可能无限制的全部装在在ESP32当中。所以,有TF接口的开发板可以将图片存在SD卡当中进行播放哦。

(4)ESP32 Python 用OLED播放Bad Apple相关推荐

  1. 基于STM32的OLED播放Bad apple

    基于stm32的oled显示badapple 有屏幕的地方就有bad apple 原理 将视频用opencv转换成图片,之后进行图片取模,转化为16进制,使用oled图片显示函数显示. 硬件所需 st ...

  2. esp32 spi 驱动 oled 屏显示来自 PC 的画面

    esp32 spi 驱动 oled 屏显示来自 PC 的画面 实验代码 gayhub 实验源码 设备及运行环境 装有python的电脑 Python 3.8.2 (tags/v3.8.2:7b3ab5 ...

  3. 用ESP8266播放播放bad apple(一):点亮LED——IO口的简单输出应用

    一.前言: 这是我的第一篇CSDN博客,从这学期开学开始接触单片机,期间从C51,到Arduino,再到ESP8266以及现在刚刚开始学期的32,已经整整一个学期.虽然不敢说多么精通,但还是希望通过一 ...

  4. stm32 播放高帧率高分辨率视频和照片详细制作过程(播放Bad Apple为例)

    stm32 播放高帧率高分辨率视频和照片详细制作过程 下文以播放Bad Apple视频为例. 文章是我边调试边写的,质量不好请见谅. 文章目录 stm32 播放高帧率高分辨率视频和照片详细制作过程 硬 ...

  5. 基于python的音频播放器_基于python实现音乐播放器代码实例

    基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...

  6. python制作音乐播放器_python实现音乐播放器 python实现花框音乐盒子

    本文实例为大家分享了python实现音乐播放器的具体代码,供大家参考,具体内容如下 """这是一个用海龟画图模块和pygame的混音模块制作的简易播放器. 作者:李兴球, ...

  7. 用Python实现序列帧播放器

    用Python实现序列帧播放器 注意 以下所有代码不可直接使用,若要使用请到百度网盘上下载源码! 链接:https://pan.baidu.com/s/1P0x8ddbnn5veFnFQJLQ0tw ...

  8. 示波器播放Bad apple坏苹果教程XY模式

    偏娱乐方向了,感兴趣的朋友可以玩下,顺便可以了解下示波器的XY模式 麦科信示波器XY模式播放Bad apple坏苹果教程

  9. python生成USB播放器歌单

    用python生成USB播放器歌单 个人比较喜欢听歌,前段时间还买了个可以插U盘和储存卡的播放器,它支持直接按数字跳转歌曲,但自己却不知道歌曲对应的号码. 测试发现歌曲顺序并不是按文件名排序,也不是按 ...

最新文章

  1. nginx的优先匹配规则
  2. python的优缺点有哪些-Python语言的优缺点有哪些
  3. 2014 华为机考 中国海洋大学上午第三题(java实现)
  4. 动态数据源切换--AbstractRoutingDataSource
  5. 苹果平板买哪款最好?
  6. 誉赐 PC阳光板www.ycpc.icoc.cn/详尽概述
  7. 测试小阿姨的mac装机列表❤️(不定时更新~)
  8. 15款替代微软产品的开源软件
  9. 数字图像处理_07.2_(顶帽变换,击中击不中原理)
  10. Netty in Action (十九) 第九章节 单元测试
  11. P1397 [NOI2013] 矩阵游戏(矩阵乘法欧拉定理)
  12. 51单片机控制二相四线步进电机
  13. android胎心监测设计,胎心监测
  14. error C2059: 语法错误:“::”
  15. 数据分析-常用的数据分析框架-06
  16. 手机里面的AP与BP
  17. 工业企业数字化转型--设备管理运维系统
  18. 第十六周 项目1 验证算法 堆排序
  19. 基于PIC16F876A的摇摇棒
  20. 缩略图Thumbnails

热门文章

  1. 知识工程重点知识介绍-3
  2. C/C++语言中 指针复制与指针赋值的作用
  3. 我是如何将2千万StackOverflow问答翻译成中文的?
  4. Android 9.0模拟器root权限获取
  5. MYSQL递归查询,根据子类ID查询所有父类(宇宙第一详细教程)
  6. 解决Xshell/Xftp强制升级无法进入问题
  7. vue2.0.js基础开发使用心得(结合实际项目对数据的增删改查)
  8. windows10 CMD 命令大全
  9. 回收站删除的文件怎么恢复?恢复的方法超简单!
  10. 发泄解压必备神器html5游戏在线玩,解压模拟器压力释放神器