0.96寸oled显示坏苹果(badapple)

2023-11-07

前言

俗话说:有屏幕的地方就会有badapple。
下面带来使用0.96寸OLED屏幕显示badapple的教程。

1、获取视频

首先从网上下载badapple的视频,下载地址:badapple

2、抓取视频图片

使用OLED播放视频的思想就是将视频分成一张一张的图片然后进行显示图片

将视频分成一张一张的图片需要使用软件 KMPlayer 来获取,软件下载方式自己在网上下载即可。

  1. 将视频badapple拖放到软件 KMPlayer 中,右击选择捕获->高级捕获:

在这里插入图片描述

  1. 设置捕获图片的尺寸

在这里插入图片描述

设置完成后,点击开始,紧接着播放视频~

然后会看到KMPlayer软件安装目录下的Capture文件夹下有很多图片产生
在这里插入图片描述

3、对捕获的图片进行取模

利用软件Image2Lcd v3.2批量对图片进行取模,取模后的结果选择生成bin文件
在这里插入图片描述
在这里插入图片描述
等待片刻,会在KMPlayer软件安装目录下的Capture文件夹下生成一个文件夹batch:
在这里插入图片描述

4、合并bin文件

在文件夹batch里打开cmd:
在这里插入图片描述
接着输入以下命令:

copy  /b  *.bin  badapple.bin

在这里插入图片描述
合并完成后在batch文件夹最下面找到badapple.bin文件剪切粘贴到内存卡。

5、编写代码

现在bin文件已经制作完成了,也放到了SD卡中了,接下来就是从SD卡中读取出来并在OLED上显示出来即可。

void badapple_play(void)
{
	unsigned char G_Bin[1024];
	/*BIN图形显存 */
	FRESULT res;
	/*用来指示运行情况 */
	FIL fsrc;
	/* 文件对象指针 */
	uint32_t ls_move = 0;
	/* 存储文件指针移动 */
	UINT br;
	/*成功读取的字节个数 */
	res = f_open(&fsrc, "0:/badapple.bin", FA_READ);
	if (res == FR_OK) {
		//文件的路径要对应,即前面把badapple.bin放在SD根目录下
		while (1) {
			res = f_lseek(&fsrc, ls_move);
			res = f_read(&fsrc, G_Bin, sizeof(G_Bin), &br);
			if (br != 1024) {
				/* 已经把数据读取完成 */
				ls_move = 0;
				break;
			}
			OLED_ShowPicture(0, 0, 128, 64, G_Bin);/*显示帧数据 */

			SysTick_Delay_ms(70);  /*加点延迟,看起来不会太鬼畜*/
			ls_move += 1024;   /*bin件数据位置偏移 */
		}
	}
}

编译之后下载到STM32中即可看到效果,效果展示:Bilibili

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

0.96寸oled显示坏苹果(badapple) 的相关文章

  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 对类 static constexpr 结构的未定义引用,g++ 与 clang

    这是我的代码 a cp p struct int2 int x y struct Foo static constexpr int bar1 1 static constexpr int2 bar2 1 2 int foo1 return
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • Linux 中 m 标志和 o 标志将存储在哪里

    我想知道最近收到的路由器通告的 m 标志和 o 标志的值 从内核源代码中我知道存储了 m 标志和 o 标志 Remember the managed otherconf flags from most recently received R
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • WcfSvcHost 的跨域异常

    对于另一个跨域问题 我深表歉意 我一整天都在与这个问题作斗争 现在已经到了沸腾的地步 我有一个 Silverlight 应用程序项目 SLApp1 一个用于托管 Silverlight SLApp1 Web 的 Web 项目和 WCF 项目
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • STM32F4 定时器 - 计算周期和预分频,以生成 1 ms 延迟

    我在用STM32F407VGT6 with CubeMX 因此 我从通用定时器开始 但我被预分频值和周期值所困扰 基本上我想每隔一段时间生成一个定时器中断n 其中 n 1 2 3 ms 并执行一些任务 计算周期和预分频值的公式有很多变化 公
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile

随机推荐

  • 【java】高并发之限流 RateLimiter使用

    1 概述 转载原文 高并发之限流 你可能知道高并发系统需要限流这个东西 但具体是限制的什么 该如何去做 还是模凌两可 我们接下来系统性的给它归个小类 希望对你有所帮助 google guava中提供了一个限流实现 RateLimiter 这
  • chmod函数

    int chmod const char pathname mode t mode 作用 修改文件的权限 参数 mode 需要修改的权限值 宏或者八进制数 返回值 成功 0 失败 1 include
  • 线性表顺序存储及相关操作(创建,插入,删除,遍历)

    线性表类型的定义 线性表是由同类数据元素构成的有序序列的线性结构 表中元素个数 n gt 0 称为线性表的长度 n 0时称为空表 在复杂线性表中 一个数据元素可以由若干个数据项 item 组成 这种情况下 常把数据元素称为记录 record
  • Linux 入门笔记(根据传智韩顺平整理的(一))

    开发步骤 1 Vi Hello java 2 输入i进入插入模式 3 输入esc 进入命令模式 4 输入 冒号 wq保存退出 q 退出不保存 5 编译Hello java gt javac Hello java 6 运行 java Hell
  • C++如何显示一个函数被调用的次数

    问题1 如何显示一个函数被调用的次数 使用static关键字 汉诺塔问题局部 void move char src char dest static int n 1 n具有全局寿命 但是局部可见 cout lt
  • 什么是漏洞扫描?

    首先什么是漏洞 国内外各种规范和标准中关于漏洞 也称脆弱性 英文对应Vulnerability 的定义很多 摘录如下 互联网工程任务组RFC4949 1 系统设计 部署 运营和管理中 可被利用于违反系统安全策略的缺陷或弱点 中国国家标准 信
  • 分布式与高并发(一)了解多线程的意义和使用

    了解多线程的意义和使用 什么是线程 并发与高并发 客户端向Tomcat发送请求 在Tomcat中存在多个个并发数 这个并发数由什么决定的 并发 单位时间内能够同时处理的请求数 默认情况下Tomcat可以支持的最大请求数是150 也就是同时支
  • 资深测试老鸟整理,性能测试-常见调优详细,卷起来...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • python报错“No module named xarray”

    在python运行 import xarray as xr 报错 No module named xarray 在命令提示符中显示已安装 一 检查 1 确认 Python 解释器路径 运行以下代码 查看正在使用的 Python 解释器路径
  • python:playwright结合pytest执行用例

    playwright结合Pytest为您的 Web 应用程序编写端到端的测试 安装pytest插件 C Users lifeng01 gt pip install pytest playwright Collecting pytest pl
  • Linux下CMake编译链接线程库以及线程绑定

    CMake编译链接线程库 1 设置链接选项 使用 CMake 编译程序时 需要设置链接选项来链接 pthread 库 在 CMakeLists txt 文件中添加链接选项 即在add executable 下面添加以下代码将 pthread
  • Tomcat性能优化(二)

    六 NIO连接器前端整体框图 1 图解tomcat总体流程 源码详细分析解读见视频 连接器在Tomcat中是一个重要的组件 叫做Tomcat前端 这个前端框架不是通常我们讲的Web前端 那是structs javascript jsp这些内
  • A记录,子域名,CNAME,MX,TXT,SRV

    http zhanghucheng cn post 8 A记录 A Address 记录是用来指定主机名 或域名 对应的IP地址记录 用户可以将该域名下的网站服务器指向到自己的web server上 同时也可以设置您域名的子域名 通俗来说A
  • Git:Unable to negotiate with错误

    今天更新了一下Git版本 发现推送代码的时候提示 Unable to negotiate with xx xx xx xx port 29418 no matching host key type found Their offer ssh
  • JS 如何将数组对象中多个特定值取出形成新数组

    有如下数据 list mainId 581 errMsg null sort null status null nowFarmId null nowPigstyId null insideEarCode MT5687G pigEntityC
  • Linux操作系统原理与应用实验 实验三 实验四 问题总结

    本文是在进行Linux实验三和实验四所遇到的问题或学到的小知识进行总结 以调通程序为内容导向 问题的解决方法或许不难 也都能搜到 但是如果笔者自己总结下来能够节省很多人去搜索解决方法的繁琐步骤 节省大家的时间 实验三 文件操作算法 新版本带
  • gdb调试动态链接库

    转自 http www cnblogs com ybgame archive 2012 03 23 2414078 html 在 Linux 可以用 gdb 来调试应用程序 当然前提是用 gcc 编译程序时要加上 g 参数 我这篇文章里将讨
  • ML学习笔记(二)----交叉验证、偏差和方差分析

    什么是交叉验证 交叉验证是一种模型验证技术 可用于评估统计分析 模型 结果在其它独立数据集上的泛化能力 它主要用于预测 我们可以用它来评估预测模型在实践中的准确度 交叉验证的目标是定义一个数据集 以便于在训练阶段 例如 验证数据集 中测试模
  • JAVA中类的加载过程

    摘自 http soft chinabyte com database 312 12643812 shtml http www cnblogs com yshb archive 2012 11 05 2756194 html 类的生命周期
  • 0.96寸oled显示坏苹果(badapple)

    前言 俗话说 有屏幕的地方就会有badapple 下面带来使用0 96寸OLED屏幕显示badapple的教程 1 获取视频 首先从网上下载badapple的视频 下载地址 badapple 2 抓取视频图片 使用OLED播放视频的思想就是