ESP32 Arduino SSD1306 OLED教程:重绘字符串-Arduino中文社区 - Powered by Discuz! Archiver

dfrobot 发表于 2019-6-3 16:25

ESP32 Arduino SSD1306 OLED教程:重绘字符串

本帖最后由 dfrobot 于 2019-5-30 21:53 编辑

简介这个ESP32教程旨在解释我们如何使用运行在ESP32开发板上的Arduino核心改变SSD1306 OLED显示屏所绘字符串的值。为了展示制作过程,我们将通过每秒递增一次的简单计数器进行显示。您可以通过上一篇文章查看如何将ESP32连接到SSD1306 OLED显示器以及如何安装与之交互所需的库。本教程使用Elecrow版本SSD1306 OLED显示器。使用的ESP32 开发板型号为NodeMCU。



代码
我们将启动包含Wire.h库的代码,Wire.h库将应用于I2C与显示器的交互过程。我们还将囊括SSD1306.h库,它将公开显示器绘制所需的功能。

#include <Wire.h>

#include "SSD1306.h"

接下来,我们将创建一个SSD1306类的对象,它拥有我们如何在显示器上进行绘制的方法。
请记住,在上一篇文章中,该类的构造函数接收显示器的I2C地址作为第一个输入信号,并且第二个和第三个输入端分别接收I2C SDA和SCL引脚的编号。
在我们的案例中,我们将继续沿用前一篇文章所示的连接图,因此SDA引脚将为21,SCL将为22。
SSD1306 display(0x3c, 21, 22);

我们还将计数器声明为全局变量,因此我们可以稍后在Arduino循环函数的多次迭代中对其进行递增。
int counter = 0;

接下来设置函数,我们将通过调用显示对象的init方法对显示进行初始化。
void setup() {

display.init();

}


由于我们希望动态更改将在显示器上显示的字符串内容,我们将在Arduino循环函数上执行剩余代码。
因为在每次循环迭代中我们将显示新的内容,我们首先通过调用clear方法清除显示。此方法不接收任何参数并返回void。
display.clear();

然后我们通过调用显示对象的drawString方法编写我们希望显示的字符串。
我们将把字符串绘制的坐标保持为零(drawString方法的第一个和第二个参数分别是x和y位置)。
对于第三个参数,我们将传递要绘制的字符串,它将通过我们的全局计数器进行构建。
display.drawString(0,0, "Counter: " + String(counter));

接下来,为了在显示器上发送需要绘制的实际内容,我们在对象上调用display方法。
display.display();

为了最终确定Arduino循环,我们将递增计数器并在每次迭代之间执行1秒的微小延迟。因此,显示器所示内容应每秒刷新一次,并显示计数器的新值。
counter ++;

delay(1000);


最终完整代码如下所示
#include <Wire.h>

#include "SSD1306.h"



SSD1306display(0x3c, 21, 22);

int counter = 0;



void setup() {

display.init();

}



void loop() {

display.clear();

display.drawString(0,0, "Counter: " + String(counter));

display.display();



counter ++;

delay(1000);

}


测试代码
https://v.qq.com/x/page/k08675cy2yz.html

在显示器和ESP32之间接线后,仅需使用Arduino IDE编译并上传代码即可。您可以在以下视频中查看预期结果。

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。他写了200多篇有关ESP32、ESP8266的有用的教程和项目。
查看更多ESP32/ESP8266教程和项目:中文版教程 : ESP32教程 合集英文版教程 : ESP32 tutorial 合集



页: [1]
查看完整版本: ESP32 Arduino SSD1306 OLED教程:重绘字符串