使用 Arduino 在 OLED 屏幕上显示数据

arduinoarduino boardsarduino idearduino programming language

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

电路图

如您所见,我们将 Vcc 连接到 3.3V,将 GND 连接到 GND,将 SDA 连接到 A4,将 SCL 连接到 A5。 A4 和 A5 还可用作 Arduino Uno 上的 SDA 和 SCL。

所需库

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

  • Adafruit SSD1306

  • Adafruit GFX

  • Adafruit BusIO(Adafruit GFX 所需)

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

示例

代码如下−

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

#define WIDTH 128 // OLED 宽度(像素)
#define HEIGHT 64 // OLED 高度(像素)

#define ADDRESS 0x3C

//创建 SSD1306 显示对象
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.println("Hello World!");
   display.display();
}

void loop() {

}

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

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

#define WIDTH 128 // OLED 宽度(像素)
#define HEIGHT 64 // OLED 高度(像素)

#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。”

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

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

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.println("Hello World!");
   display.display();
}

在循环中,什么都没做。

void loop() {

}

相关文章