《Arduino》开发 之 用Arduino的u8g2库控制两块IIC协议OLED

问题:在使用OLED 屏幕时,我们会遇到一页显示不下的问题。这个时候可以选择分页显示,但还有一种方法:再加一个屏(硬核)

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

硬件:ESP8266  或   Arduino UNO  

ESP8266接线:

ESP8266 NODEMCU OLED1 OLED2
GPIO5 D1 SCL SCL
GPIO4 D2 SDA  
GPIO12 D6   SDA

所用开发库:<U8g2> 2.25.10

刷新两个OLED其实与刷新一块屏幕没啥区别,只需要在构造U8g2时多构造一个即可,下面,请看代码:

#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);
//U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2a(U8G2_R0, /* clock=*/ 5, /* data=*/ 12, /* reset=*/ U8X8_PIN_NONE);
U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2a(U8G2_R0, /* clock=*/ D1, /* data=*/ D6, /* 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(); 
  u8g2a.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() );
  u8g2a.firstPage();
  do {
    u8g2a.setFont(u8g2_font_ncenB14_tr);
    u8g2a.drawXBMP(0,0, bmp2_x, bmp2_y, bmp2);
  } while ( u8g2a.nextPage() );
  delay(500);
  u8g2a.firstPage();
  do {
    u8g2a.setFont(u8g2_font_ncenB14_tr);
    u8g2a.drawXBMP(32,0, bmp1_x, bmp1_y, bmp1);
  } while ( u8g2a.nextPage() );
  u8g2.firstPage();
  do {
    u8g2.setFont(u8g2_font_ncenB14_tr);
    u8g2.drawXBMP(0,0, bmp2_x, bmp2_y, bmp2);
  } while ( u8g2.nextPage() );
  delay(500);
}
 
  • 看下效果吧

可以看到两边的图片不停地切换:

发布了16 篇原创文章 · 获赞 18 · 访问量 4065

猜你喜欢

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