《Arduino》開發 之 用Arduino的u8g2庫控制多個 IIC協議0.96OLED(SSD1306)

問題:在使用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);
}
 
  • 看下效果吧

可以看到兩邊的圖片不停地切換:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章