首页 > 解决方案 > MakerHawk (Heltec) ESP32 OLED 显示编译器错误且不显示

问题描述

我购买了带有内置 OLED 显示屏的 MakerHawk (Heltec) ESP32。但我无法在 Arduino IDE 中运行 OLED 示例。

来自https://github.com/HelTecAutomation/Heltec_ESP32的 OLED 示例 SSD1306SimpleDemo

对于测试,我只是想展示一些东西,但这很困难。但是我设法解决了这些问题,现在我想分享它。

首先,许多编译器错误,例如:

SSD1306SimpleDemo:35:10: error: 'class Heltec_ESP32' has no member named 'display'

--> 通过在“#include”heltec.h”前添加“ #define WIFI_LoRa_32 ”修复,没有这个,heltec.h 将不会声明显示...

下一个编译器错误:

heltec.cpp:104:10: error: 'LED' was not declared in this scope

heltec.cpp:109:10: error: 'Vext' was not declared in this scope

--> 通过在 heltec.cpp 中删除/注释所有带有“LED”和“Vext”的行来修复。我认为应该对此进行分析,但现在我们将其留在这里

在此之后,代码可以成功编译,但显示仍然是黑色的。--> 通过将“工具”部分中的“Board:”设置为“ Heltec Wifi Lora 32(V2) ”来修复。上传代码后,显示器显示示例输出。

我不认为这是最终的解决方案,但它帮助我继续。也许这里有人想知道为什么示例程序无法从草图编译和运行......

标签: esp32

解决方案


我不知道这是否有帮助,但我设法在没有错误的 Heltec 库的情况下使用了这块板上的显示器。您需要安装 SSD1306 库,并重新定义 SCL 和 SDA 引脚,并将 GPIO 16 设置为高。然后OLED显示器工作(至少在我的情况下......)

#include <Wire.h>
#include "SSD1306Wire.h"
...
#define SDA 4
#define SCL 15
#define OLED_RST 16
...
SSD1306Wire display(0x3c, SDA, SCL);
...
void setup() {
  pinMode(OLED_RST, OUTPUT);
  digitalWrite(OLED_RST, HIGH);

  display.clear();
  display.setFont(ArialMT_Plain_16);
  display.drawString(0, 0, "IT WORKS");
  display.display();

}

推荐阅读