优雅的使用ESP8266基于Arduino编程,30行代码实现oled播放MP4片段!!!

一、项目背景与准备工作

上次写的python模拟数组有点难用导致点赞的人太少了,这次出个超简单的,有手就能实现的教程,仅用30行代码就能实现45s左右的oled视频播放。

首先,我们需要准备以下硬件:

  • ESP8266 开发板
  • 合适的 OLED 显示屏(如 SSD1306 等)
  • 连接线路若干

在软件方面,确保已经安装好 Arduino IDE,并添加了 ESP8266 开发板支持库以及相应的 OLED 驱动库。

二、环境搭建

1、安装Arduino IDE的应用

Arduino下载、安装及配置(含中文配置步骤)_arduino官网下载-CSDN博客

记得把界面改为中文更好用!

2、安装U8g2lib的库

安装成功

3、导入esp8266的硬件库

8266_package_3.1.1_arduinome.exe官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘

https://www.123pan.com/s/dJrKVv-b1GB

下载,解压,安装一气呵成。然后重启arduino的界面就可以看见这里有选择了。

NodeMCU 0.9和NodeMCU 1.0随便选都行。

到达这里我们已经完成99%,环境已经搭建完成。只差代码了。

4、新建项目代码copy

把image.h文件和程序文件ino同一个文件夹目录下!

把image.h文件和程序文件ino同一个文件夹目录下!

把image.h文件和程序文件ino同一个文件夹目录下!

演示文件链接:https://pan.quark.cn/s/5ee10a74032b

5、接线示意图
#define SCL 12
#define SDA 13   

//然后这个可以修改,根据ESP8266对于Arduino的映射图按照实际连线
//  SCL -----12----D7
//  SDA -----13----D8

三、代码实现步骤

代码很简单就只有30行。

核心就是调用U8g2的库对生成的显示数组进行播放。

为啥用ESP8266呢,原因有2;

1、ESP8266用空间太多了,在不接内存卡的情况下,把显示数组放进去flash里面调用,正常存个60秒简简单单。

2、ESP8266基于arduino开发属于有手就行的,容易上手,不需要太多基础。

整套代码难点在生成头文件的工具不好找,还有就是需要使用合适的方法把显示数组代码放进去flash内。

成功实现的朋友记得给我点个赞吧!感谢!!!

#include <Arduino.h>
#include <U8g2lib.h>
#include <Wire.h>
#include "image.h"

#define SCL 12
#define SDA 13
#define dx 113
#define dy 64
U8G2_SSD1306_128X64_NONAME_1_SW_I2C u8g2(U8G2_R0, /* clock=*/ SCL, /* data=*/ SDA, /* reset=*/ U8X8_PIN_NONE); 

void dispaly(void)
{
  for(int i=0;i<584;i++) {
    u8g2.firstPage();
    do { 
      u8g2.drawXBMP(8, 0, dx, dy, BMP1[i]);  // (0,0)为显示的起始位置;(113,64)为图片的大小,需要根据实际图片的大小来更改
    } while (u8g2.nextPage());
    delay(30);
  }
}

void setup()
{
  u8g2.begin();
}

void loop()
{
  dispaly();
}
#ifndef IMAGE_H
#define IMAGE_H

//width:113   heights:'64

#undef  ICACHE_RODATA_ATTR
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text")))
#undef  PROGMEM
#define PROGMEM   ICACHE_RODATA_ATTR

const unsigned char BMP1[][960]PROGMEM = {
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,
0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xF5,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,
0xFF,0xCF,0xF8,0xFF,0xDF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xEF,0xFF,0xFF,
0xFB,0xF3,0xFF,0xEF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF9,
0xE7,0xFF,0xAF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0x7F,0xDE,0xFF,0xFF,0xFD,0xEF,
0xFF,0xB7,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xBF,0x3F,0xFC,0xFF,0x1E,0xCF,0xFF,
0xF7,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFD,0xFF,0xBE,0xCF,0xFF,0x78,
0xFC,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFD,0xFF,0xBE,0xDF,0xBF,0xFF,0xFF,
0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xDF,0xFF,0xFD,0xFF,0xAE,0xDE,0x7F,0xFF,0xFB,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xDF,0xBF,0xFD,0xFF,0xFE,0xDE,0x7F,0xFF,0xFB,0xFF,0x01,
0xFF,0xFF,0xFF,0xFF,0xDF,0xBF,0xFD,0xFF,0xFE,0xDF,0xFF,0xFE,0xF9,0xFF,0x01,0xFF,
0xFF,0xFF,0xFF,0xDF,0xBF,0xFD,0xFF,0xFE,0xDF,0xFF,0xFE,0xFD,0xFF,0x01,0xFF,0xFF,
0xFF,0xFF,0xDF,0xBF,0xFD,0xFF,0xFF,0xEF,0xFF,0xFE,0xFC,0xFF,0x01,0xFF,0xFF,0xFF,
0xFF,0xDF,0xBF,0xFE,0xFF,0xFD,0xEF,0xFF,0xFE,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,
0xBF,0x3F,0xFE,0xFF,0xFB,0xF7,0xFF,0xFE,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0x7F,
0xC6,0xFF,0xFF,0xE7,0xF9,0xFF,0xCE,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x1F,0xFC,0xFF,0xBC,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0xFF,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x01,
},		/*0000.png*/

//省略500+数组>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#endif

然后用我自制的MP4转数组工具生成头文件,自制的python文件在上一篇文章中。

注意:暂时没更新最新的,但最新的代码在仓库,惩罚那些没有看清楚的朋友,现有教程只能生成行列式的,而这次需要的逐行式的生成方式。

(python)一键生成ikun的oled的显示数组-CSDN博客

把显示数组放进flash的核心就是五行代码,重新定义PROGME,并且把数组放进".irom.text"位置

#undef  ICACHE_RODATA_ATTR
#define ICACHE_RODATA_ATTR __attribute__((section(".irom.text")))
#undef  PROGMEM
#define PROGMEM   ICACHE_RODATA_ATTR

const unsigned char BMP1[][960] PROGMEM = {}

esp8266显示meme动画

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值