在Arduino上显示OLED屏幕数据


在本教程中,我们将Arduino与SSD 1306 OLED显示屏连接。

电路图

如您所见,我们将Vcc连接到3.3V,GND连接到GND,SDA连接到A4,SCL连接到A5。A4和A5在Arduino Uno上也充当SDA和SCL。

所需库

与OLED显示屏连接Arduino Uno需要以下库:

  • Adafruit SSD1306

  • Adafruit GFX

  • Adafruit BusIO(Adafruit GFX需要)

转到**工具 → 管理库**,搜索这些库并点击安装。



示例

代码如下:

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>

#define WIDTH 128 // OLED width (pixels)
#define HEIGHT 64 // OLED height (pixels)

#define ADDRESS 0x3C

//Creation of SSD1306 display object
Adafruit_SSD1306 display(WIDTH, HEIGHT, &Wire, -1);

void setup() {
   Serial.begin(9600);

   if(!display.begin(SSD1306_SWITCHCAPVCC, ADDRESS)) {
      Serial.println("SSD1306 initialization failed");
      while(1){}
   }

   delay(5000);
   display.clearDisplay();

   display.setTextColor(WHITE);
   display.setTextSize(1);
   display.setCursor(0, 10);
   // Display static text
   display.println("Hello World!");
   display.display();
}

void loop() {

}

如您所见,我们首先包含所需的库,然后定义显示宽度、高度和I2C地址。

#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>

#define WIDTH 128 // OLED width (pixels)
#define HEIGHT 64 // OLED height (pixels)

#define ADDRESS 0x3C

接下来,我们定义显示。

Adafruit_SSD1306 display(WIDTH, HEIGHT, &Wire, -1);

末尾的-1表示此OLED显示屏没有复位引脚。如果OLED屏幕有复位引脚,请输入连接复位引脚的Arduino GPIO引脚编号。&Wire表示I2C通信对象(Wire)。

在Setup中,我们首先初始化Serial,然后我们尝试使用display.begin()初始化显示对象。它接收两个参数:SSD1306_SWITCHCAPVCC和OLED显示屏的I2C地址。

您可能想知道SSD1306_SWITCHCAPVCC代表什么。根据Adafruit SSD1306库源代码中的注释,此第一个参数确定VCC选择。

“传递SSD1306_SWITCHCAPVCC从3.3V电源产生显示电压(升压),否则传递SSD1306_EXTERNALVCC。大多数使用Adafruit SSD1306扩展板的情况都需要SSD1306_SWITCHCAPVCC。”

如果初始化成功,我们将继续进行,否则我们将进入无限循环。

如果我们继续进行,我们将等待一小段时间,然后清除显示屏,然后设置文本颜色、文本大小和光标位置,然后写入要显示的文本。建议您尝试不同的文本颜色、大小和光标位置。

void setup() {
   Serial.begin(9600);

   if(!display.begin(SSD1306_SWITCHCAPVCC, ADDRESS)) {
      Serial.println("SSD1306 initialization failed");
      while(1){}
   }
   delay(5000);
   display.clearDisplay();

   display.setTextColor(WHITE);
   display.setTextSize(1);
   display.setCursor(0, 10);
   // Display static text
   display.println("Hello World!");
   display.display();
}

在循环中,什么也不做。

void loop() {

}

更新于:2021年5月31日

767 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告