本教程针对的是 4pin 的I2C单色的OLED 128x64显示屏,使用 u8glib 库,其他不同的显示屏可以根据情况做对应修改。

本文为爱鱼客创客板块原创内容,未经作者及本站允许请勿转载至任何其他平台!

128X64OLED

I2C连接

  • VIN → 5V 或 3.3V
  • GND → GND
  • SCL → A5
  • SDA → A4

Library 库

这里使用u8glib的库,可以自行选择其他库使用。
https://bintray.com/olikraus/u8glib/Arduino,找到“Downloads”下载最新的库。
然后解压,把“U8glib”添加到 Arduino IDE “Library”文件夹下,重启 Arduino IDE

代码

菜单栏: “文件” → “示例” → “U8glib”,选“GraphicsTest”或“Hello World”均可进行测试。
*注意代码中需要取消对应显示屏型号前面的注释“//”才能使用)

找到以下代码,把最前面的“//”去掉

//U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);	// I2C / TWI

如果你的OLED和上面图上的一样是4个pin,而且是128x64分辨率,那么你可以直接复制下面的代码进行测试:


U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);	// I2C / TWI 

void draw(void) {
  // graphic commands to redraw the complete screen should be placed here  
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  u8g.drawStr( 0, 22, " mianbao.space");
}

void setup(void) {
  // flip screen, if required
  // u8g.setRot180();

  // set SPI backup if required
  //u8g.setHardwareBackup(u8g_backup_avr_spi);

  // assign default color value
  if ( u8g.getMode() == U8G_MODE_R3G3B2 ) {
    u8g.setColorIndex(255);     // white
  }
  else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) {
    u8g.setColorIndex(3);         // max intensity
  }
  else if ( u8g.getMode() == U8G_MODE_BW ) {
    u8g.setColorIndex(1);         // pixel on
  }
  else if ( u8g.getMode() == U8G_MODE_HICOLOR ) {
    u8g.setHiColorByRGB(255,255,255);
  }
}

void loop(void) {
  // picture loop
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );

  // rebuild the picture after some delay
  delay(50);
}