《Arduino》开发 之 用Arduino的u8g2库刷图片

 问题:在使用arduino环境下u8g2库时,我们会遇到刷图片的问题,今天就带大家一步一步学习如何用IIC协议的0.96寸OLED显示一幅图片。

开发环境:Arduino (1.8.10)     或     VScode 环境下 PlatformIO 插件

硬件:ESP8266  或   Arduino UNO  

接线:

1.ESP8266

ESP8266 NODEMCU  
gpio5 D1 SCL
gpio4 D2 SDA

2.Arduino UNO

 SDASCL是模拟口 A4 和 A5

 所用开发库:<U8g2> 2.25.10

  • 图片取模
  1. 下载一幅图片

     2.用电脑自带工具 画图 打开

修改像素为64*64

另存图片为 单色位图*bmp格式

得到这么一幅图片

打开取模工具 PCtoLCD2002

模式选择为 图形模式

 打开刚才另存的图片:

点击 设置 

修改选项:

记得点击 确定 哦!!!

然后拷贝下面数组到程序中!

#define bmp1_x 64
#define bmp1_y 64

static const unsigned char bmp1[] U8X8_PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x00,0x00,0x00,0x00,0x0F,0x00,
0x00,0x90,0x07,0x00,0x00,0xC0,0x08,0x00,0x00,0x08,0x0F,0x00,0x00,0x70,0x10,0x00,0x00,0x08,0x1E,0x00,0x00,0x38,0x10,0x00,0x00,0x08,0x7D,0x00,0x00,0x1E,0x10,0x00,
0x00,0x08,0xFA,0x00,0x00,0x0F,0x30,0x00,0x00,0x04,0xF4,0x03,0xC0,0x07,0x20,0x00,0x00,0x04,0xE8,0x07,0xE0,0x13,0x30,0x00,0x00,0x04,0xFA,0xFF,0xFF,0x0B,0x20,0x00,
0x00,0x44,0xD4,0xFF,0xFF,0x27,0x20,0x00,0x00,0x84,0xE8,0xFF,0xFF,0x9F,0x30,0x00,0x00,0x04,0xF1,0xFF,0xFF,0x5F,0x30,0x00,0x00,0x04,0xFA,0x3F,0xFE,0x3F,0x10,0x00,
0x00,0x80,0xFC,0x1F,0xFC,0x7F,0x10,0x00,0x00,0x08,0xFE,0x0F,0xF8,0x7F,0x10,0x00,0x00,0x08,0xFF,0x07,0xF0,0xFF,0x10,0x00,0x00,0x88,0xFF,0x03,0xE0,0xFF,0x11,0x00,
0x00,0x88,0x0F,0x03,0xE0,0xF0,0x09,0x00,0x00,0xD0,0x03,0x00,0x00,0xC0,0x0B,0x00,0x00,0xD0,0x01,0x00,0x00,0x80,0x07,0x00,0x00,0xE0,0xE1,0x09,0x80,0x07,0x07,0x00,
0x00,0xE0,0xF0,0x03,0xC0,0x0F,0x07,0x00,0x00,0xE0,0xF8,0x17,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,
0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF1,0x03,0xC0,0x8F,0x07,0x00,0x00,0xE0,0xE1,0x91,0x11,0xC3,0x07,0x00,0x00,0xE0,0x03,0x00,0x20,0xE0,0x07,0x00,
0x00,0xC0,0x0F,0x00,0x00,0xF0,0x03,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x00,0x00,
0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

这一种是图片取模,还有一种是直接自定义的:

打开取模工具 PCtoLCD2002

模式选择为 图形模式

 新建一幅图像 :

用左键画画上一些东西(提示:右键擦除点)

设置修改参数 ,与刚才的一致,不再赘述~

拷贝数组到你的程序中。接下来让我们看下效果吧

  • 示例代码
#include <Arduino.h>
#include <U8g2lib.h>

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif

U8G2_SSD1306_128X64_NONAME_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);

#define bmp1_x 64
#define bmp1_y 64

static const unsigned char bmp1[] U8X8_PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD0,0x00,0x00,0x00,0x00,0x0F,0x00,
0x00,0x90,0x07,0x00,0x00,0xC0,0x08,0x00,0x00,0x08,0x0F,0x00,0x00,0x70,0x10,0x00,0x00,0x08,0x1E,0x00,0x00,0x38,0x10,0x00,0x00,0x08,0x7D,0x00,0x00,0x1E,0x10,0x00,
0x00,0x08,0xFA,0x00,0x00,0x0F,0x30,0x00,0x00,0x04,0xF4,0x03,0xC0,0x07,0x20,0x00,0x00,0x04,0xE8,0x07,0xE0,0x13,0x30,0x00,0x00,0x04,0xFA,0xFF,0xFF,0x0B,0x20,0x00,
0x00,0x44,0xD4,0xFF,0xFF,0x27,0x20,0x00,0x00,0x84,0xE8,0xFF,0xFF,0x9F,0x30,0x00,0x00,0x04,0xF1,0xFF,0xFF,0x5F,0x30,0x00,0x00,0x04,0xFA,0x3F,0xFE,0x3F,0x10,0x00,
0x00,0x80,0xFC,0x1F,0xFC,0x7F,0x10,0x00,0x00,0x08,0xFE,0x0F,0xF8,0x7F,0x10,0x00,0x00,0x08,0xFF,0x07,0xF0,0xFF,0x10,0x00,0x00,0x88,0xFF,0x03,0xE0,0xFF,0x11,0x00,
0x00,0x88,0x0F,0x03,0xE0,0xF0,0x09,0x00,0x00,0xD0,0x03,0x00,0x00,0xC0,0x0B,0x00,0x00,0xD0,0x01,0x00,0x00,0x80,0x07,0x00,0x00,0xE0,0xE1,0x09,0x80,0x07,0x07,0x00,
0x00,0xE0,0xF0,0x03,0xC0,0x0F,0x07,0x00,0x00,0xE0,0xF8,0x17,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,
0x00,0xE0,0xF8,0x07,0xE0,0x1F,0x07,0x00,0x00,0xE0,0xF1,0x03,0xC0,0x8F,0x07,0x00,0x00,0xE0,0xE1,0x91,0x11,0xC3,0x07,0x00,0x00,0xE0,0x03,0x00,0x20,0xE0,0x07,0x00,
0x00,0xC0,0x0F,0x00,0x00,0xF0,0x03,0x00,0x00,0xC0,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x40,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x20,0x00,0x00,
0x00,0x00,0x08,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

#define bmp2_x 128
#define bmp2_y 64

static const unsigned char bmp2[] U8X8_PROGMEM = {
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x01,0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x81,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,
0x00,0x01,0x00,0x00,0x01,0x00,0xF8,0x01,0x00,0x00,0x01,0x00,0x00,0x00,0xFF,0x07,0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x07,0x00,0x00,0x21,0x00,0x00,0xA0,0x01,0x00,
0x00,0x01,0x00,0x00,0x01,0x00,0x00,0x04,0x00,0x00,0x21,0x00,0x00,0x30,0x00,0x00,0x00,0x01,0x00,0x80,0x01,0x00,0x00,0x06,0x00,0x00,0x21,0x00,0x00,0x10,0x00,0x00,
0x00,0x01,0x00,0x80,0x00,0x00,0xE0,0x03,0x00,0x00,0x21,0x00,0x00,0x10,0x00,0x00,0x00,0x01,0x00,0x40,0x00,0x00,0x60,0x00,0x00,0x00,0x23,0x10,0x00,0x30,0x00,0x00,
0x00,0x01,0x00,0x60,0x00,0x00,0x80,0x03,0x00,0x00,0xFE,0x1F,0x00,0x60,0x00,0x00,0x00,0x01,0x00,0x18,0x00,0x00,0x00,0x04,0x00,0x00,0x20,0x00,0x00,0x80,0x01,0x00,
0x00,0x01,0x80,0x0F,0x00,0x00,0x00,0x04,0x00,0x00,0x30,0x00,0x00,0x00,0x1E,0x00,0x00,0x01,0x80,0x3F,0x00,0x00,0x00,0x06,0x00,0x00,0x10,0x00,0x00,0x00,0xE0,0x00,
0x00,0x00,0x00,0xC0,0x03,0x00,0x00,0x03,0x00,0x00,0x10,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x03,
0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x38,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x96,0x2A,0x00,0x00,0x00,0x00,0xF0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x80,0x02,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x28,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,0x44,0xA4,0x22,0x49,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x12,0x00,0x00,0x04,0x00,0x50,0x2A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x2C,0x00,0x00,0x00,0x18,0x00,0x00,0x40,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x20,0x03,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x01,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x18,0x00,
0x00,0x00,0xF0,0xAD,0x55,0x9D,0x4B,0x69,0x3B,0x00,0xC0,0x00,0x00,0x00,0x10,0x00,0x00,0x40,0x0E,0x00,0x00,0x38,0x01,0x00,0xC0,0x01,0x80,0x00,0x00,0x00,0x10,0x00,
0x00,0xC0,0x01,0x00,0x00,0x6E,0x01,0x00,0x1F,0x01,0x80,0x00,0x00,0x00,0x10,0x00,0x00,0xC0,0x00,0x00,0x80,0xC7,0x01,0xC0,0x10,0x02,0xFC,0x00,0x00,0x00,0x10,0x00,
0x00,0xB0,0x00,0x00,0xC0,0x84,0x02,0x30,0x20,0x82,0x83,0x00,0x00,0x00,0x10,0x00,0x00,0x18,0x01,0x00,0x30,0x82,0x03,0x08,0x20,0x42,0xC0,0x00,0x00,0x00,0x10,0x00,
0x00,0x0C,0x03,0x00,0x18,0x02,0x01,0x06,0x40,0x21,0xC0,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x06,0x00,0x06,0x02,0x05,0x01,0x40,0x11,0xA0,0x00,0x00,0x00,0x18,0x00,
0x00,0x06,0x0C,0x00,0x03,0x04,0xC7,0x00,0xC0,0x08,0x90,0x1E,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0xC0,0x00,0x04,0x2A,0x00,0xE0,0x04,0x88,0x11,0x00,0x00,0x08,0x00,
0x00,0x00,0x60,0x70,0x00,0x04,0x1A,0x00,0x90,0x06,0x84,0x30,0xE0,0x01,0x0C,0x00,0x00,0x00,0x80,0x0F,0x00,0x08,0x1E,0x00,0x88,0x02,0x02,0x20,0x38,0x03,0x06,0x00,
0x00,0x00,0x00,0x00,0x00,0x18,0x24,0x00,0x82,0xC1,0x00,0x20,0x0E,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xC0,0x80,0x01,0x20,0x00,0x40,0x02,0x82,0x01,0x00,
0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x21,0x00,0x0C,0x00,0xC0,0x01,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x16,0x00,0x02,0x00,0x80,0x01,0x32,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x6E,0x3B,0xD8,0x00,0x00,0x80,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x05,0x00,0x00,0xC0,0x00,0x06,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xA0,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

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

void loop(void) {
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB14_tr);
    u8g2.drawXBMP(32,0, bmp1_x, bmp1_y, bmp1);
  } while ( u8g2.nextPage() );
  delay(500);
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB14_tr);
    u8g2.drawXBMP(0,0, bmp2_x, bmp2_y, bmp2);
  } while ( u8g2.nextPage() );
  delay(500);
}

上传代码到你的ESP8266或者Arduino UNO 中

你会看到以下效果

  • 演示结果

发布了3 篇原创文章 · 获赞 9 · 访问量 476

猜你喜欢

转载自blog.csdn.net/qq_41868901/article/details/104221495
今日推荐