esp32 - 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) ”来修复。上传代码后,显示器显示示例输出。
我不认为这是最终的解决方案,但它帮助我继续。也许这里有人想知道为什么示例程序无法从草图编译和运行......
解决方案
我不知道这是否有帮助,但我设法在没有错误的 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();
}
推荐阅读
- javascript - 来自 .on('click', function(e) 的多个事件 - SlickQuiz
- html - CSS - 如何在垂直上到下而不是从左到右对内联块进行排序?
- list - Haskell 函数保留列表的重复元素
- postgresql - plpgSQL 从 FUNCTION 返回记录类型
- java - 如何为自定义链表创建一些方法(例如:insertAtIndex())?
- c# - 将字符串字节数组内容复制到另一个数组,并将前缀 0 复制到 C# 中的单个数字
- c - 将 OpenSSL 的 C 实现转换为 Ruby 代码
- excel - 突出显示颜色在同一行中匹配的值
- java - 为什么 Java 8 Instant.now() 在我的本地服务器上显示错误的 UTC?
- node.js - 每个 npm 命令都需要永远