Arduino Nano 驱动OLED测试入门(一)(软IIC以及硬IIC链接SSD1306屏)

需要的准备工作

硬件

面包板一个, Arduino Nano板, SSD1306的OLED屏(本文采用I2C接口)一个,线材若干

在这里插入图片描述

库文件

u8glib ,U8g2 两个库,如果没有的话可以在CSDN里下载。

连接(硬IIC接口)
Arduino OLED
3V3 VCC
GND GND
A5 SCL
A4 SDA
连接(软IIC接口)

如果I2C需要共用的情况下,U8g2的库可以支持用普通的IO做I2C接口驱动OLED,本文中使用D10做SCL接口,D11做SDA接口。

Arduino OLED
3V3 VCC
GND GND
D10(可更改) SCL
D11(可更改) SDA
Hello word 测试
基于u8glib(硬IIC接口)

为了提高可阅读性,无关紧要的内容已删除。

  1. 添加库文件,打开arduino程序,执行下图1、2、3,找到下载的库文件。
    在这里插入图片描述
  2. 执行Demo程序
    打开Arduino程序,执行1、2、3、4
    在这里插入图片描述
    如果想继续测试显示结果,可复制下列代码,显示三行。
#include "U8glib.h"
/*I2C协议*/
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE); 

void setup()
{
  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

  // u8g.setFont(u8g_font_unifont);
  Serial.begin(9600);

  u8g.setFont(u8g_font_osb18);   /*设置字体大小*/
  u8g.setFontRefHeightExtendedText();
  u8g.setDefaultForegroundColor();
  u8g.setFontPosTop();
}

void loop()
{
  u8g.firstPage();  
  do {
    u8g.drawStr(0,0,"hello world!");
    u8g.drawStr(0,20,"ha ha!");
    u8g.drawStr(20,40,"well done!");  /*设置起始位置*/
  } while( u8g.nextPage() );
  delay(500);
}
基于U8g2(软IIC接口)

#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_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 10, /* data=*/ 11, /* reset=*/ U8X8_PIN_NONE);   // 设置D10做SCL,D11做SDA,可以改为其它接口
//U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ 16, /* data=*/ 17);   // 如果要用硬IIC接口,可以用这句


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

void loop(void) {
  u8g2.clearBuffer();					// clear the internal memory
  u8g2.setFont(u8g2_font_ncenB14_tr);	// 这里可以修改字体大小
  u8g2.drawStr(0,10,"Hello World!");	// write something to the internal memory
  u8g2.sendBuffer();					// transfer internal memory to the display
  delay(1000);  
}

需要了解更多请查阅相关手册。

猜你喜欢

转载自blog.csdn.net/malcolm_110/article/details/101448336