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

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3114|回复: 0

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

[复制链接]
发表于 2019-6-3 16:25 | 显示全部楼层 |阅读模式
本帖最后由 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库,它将公开显示器绘制所需的功能。


[mw_shl_code=applescript,true]#include <Wire.h>

#include "SSD1306.h"[/mw_shl_code]


接下来,我们将创建一个SSD1306类的对象,它拥有我们如何在显示器上进行绘制的方法。

请记住,在上一篇文章中,该类的构造函数接收显示器的I2C地址作为第一个输入信号,并且第二个和第三个输入端分别接收I2C SDA和SCL引脚的编号。

在我们的案例中,我们将继续沿用前一篇文章所示的连接图,因此SDA引脚将为21,SCL将为22。

[mw_shl_code=applescript,true]SSD1306 display(0x3c, 21, 22);[/mw_shl_code]


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

[mw_shl_code=applescript,true]int counter = 0;[/mw_shl_code]


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

[mw_shl_code=applescript,true]void setup() {

  display.init();

}

[/mw_shl_code]

由于我们希望动态更改将在显示器上显示的字符串内容,我们将在Arduino循环函数上执行剩余代码。

因为在每次循环迭代中我们将显示新的内容,我们首先通过调用clear方法清除显示。此方法不接收任何参数并返回void。

[mw_shl_code=applescript,true]display.clear();[/mw_shl_code]


然后我们通过调用显示对象的drawString方法编写我们希望显示的字符串。

我们将把字符串绘制的坐标保持为零(drawString方法的第一个和第二个参数分别是x和y位置)。

对于第三个参数,我们将传递要绘制的字符串,它将通过我们的全局计数器进行构建。

[mw_shl_code=applescript,true]display.drawString(0,0, "Counter: " + String(counter));[/mw_shl_code]


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

[mw_shl_code=applescript,true]display.display();[/mw_shl_code]


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

[mw_shl_code=applescript,true]counter ++;

delay(1000);[/mw_shl_code]



最终完整代码如下所示

[mw_shl_code=applescript,true]#include <Wire.h>

#include "SSD1306.h"



SSD1306  display(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);

}[/mw_shl_code]



测试代码



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


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

查看更多ESP32/ESP8266教程和项目:
中文版教程 : ESP32教程 合集
英文版教程 : ESP32 tutorial 合集




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 14:53 , Processed in 0.076790 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表