ESP32配置0.96寸OLED显示屏

本文指导如何在ArduinoIDE中设置ESP32开发环境,安装ESP32开发包和SSD1306OLED显示库。遇到的编译错误是由于缺少Adafruit_GFX库的依赖,解决方案是安装Adafruit_BusIO库。通过I2C通信协议,使用Adafruit_SSD1306和Adafruit_GFX库控制OLED显示器,并展示了滚动文本的实现。
摘要由CSDN通过智能技术生成

一. 开发环境搭建

1.下载安装 arduino IDE

https://www.arduino.cn/thread-5838-1-1.html

2. 在arduino IDE下载ESP32开发包

输入: https://dl.espressif.com/dl/package_esp32_index.json

添加完成后重启IDE,然后 :

 

注意: 要能正常显示,esp32的版本选择1.05的,1.03不行
不要中途退出.~!如果你中途推出大概率卡死, 下一次看似继续下载,其实下载完后会报错,需要重新下载

 二:库的安装

在本例中,我们使用 I2C 通信协议。ESP32 中最适合 I2C 通信的引脚是通用输入输出接口 22(SCL) 和通用输入输出接口 21(SDA)。

安装 SSD1306 OLED 库 – ESP32

(也可以用u8g2库,在Arduino IDE中可以搜索下载该库)

有几个库可用于使用 ESP32 控制 OLED 显示器。在本教程中,我们将使用两个 Adafruit 库:Adafruit_SSD1306 库和Adafruit_GFX 库

下载库文件,解压在Arduino IDE安装的对应路径。

注意:安装库的时候直接在arduino内部的库管理里面安装

 在您的 Arduino IDE 中,转到文件>示例> Adafruit SSD1306并选择您正在使用的显示器的示例。

编译报错:libraries\Adafruit-GFX-Library-master\Adafruit_GrayOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory为开发板 ESP32 Dev Module 编译时出错。

解决方法:如果使用较早版本的 Arduino IDE1.8.10 之前,请找到并安装 Adafruit_BusIO,较新版本会自动处理此先决条件。
Adafruit_BusIO 库和Adafruit_EPD库。

如果您的 OLED 模块没有 RESET 引脚,则应将 OLED_RESET 变量设置为 -1,如下所示:

  • 检查 OLED 显示屏是否正确连接到 ESP32
  • 仔细检查 OLED 显示 I2C 地址:在 OLED 连接到 ESP32 的情况下,上传以下代码并在串行监视器中检查 I2C 地址
    如有必要,您应该更改以下行中的 OLED 地址。在我们的例子中,地址是 0x3C
/*********
  Rui Santos
  Complete project details at https://randomnerdtutorials.com  
*********/

#include <Wire.h>
 
void setup() {
  Wire.begin();
  Serial.begin(115200);
  Serial.println("\nI2C Scanner");
}
 
void loop() {
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ ) {
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0) {
      Serial.print("I2C device found at address 0x");
      if (address<16) {
        Serial.print("0");
      }
      Serial.println(address,HEX);
      nDevices++;
    }
    else if (error==4) {
      Serial.print("Unknow error at address 0x");
      if (address<16) {
        Serial.print("0");
      }
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0) {
    Serial.println("No I2C devices found\n");
  }
  else {
    Serial.println("done\n");
  }
  delay(5000);          
}

完成以上操作后,将ssd1306_128x64_i2c示例编译上传到ESP32开发板中,上传过程中按住BOOT按键或者RST按键,直到上传成功。程序上传完毕后,单击RST重启开发板即可看见OLED屏幕显示的动画。

注意:上传程序的时候需要拔掉OLED模块的电源,不然也有可能上传失败,报错信息Warning: Could not auto-detect Flash size (FlashID=0xffffff, SizeID=0xff), defaulting to 4MB Compressed 8192 bytes to 47...

Adafruit OLED 库提供了有用的方法来轻松滚动文本:

startscrollright(0x00, 0x0F): 从左到右滚动文本
startscrollleft(0x00, 0x0F): 从右到左滚动文本
startscrolldiagright(0x00, 0x07): 将文本从左下角滚动到右上角
startscrolldiagleft(0x00, 0x07): 将文本从右下角滚动到左上角
 

#include <Wire.h> // 使用 I2C 的库
#include <Adafruit_GFX.h> //Adafruit 库写入显示器
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128 // 使用的是 128×64 OLED 显示屏
#define SCREEN_HEIGHT 64 // 

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
//  I2C 通信协议
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);// (-1) 参数表示您的 OLED 显示器没有 RESET 引脚

void testscrolltext(void); //函数声明


void setup() {
  Serial.begin(115200);//115200 的波特率初始化串行监视器以进行调试

  if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C))  0x3d 0x3c  0x78 0x7A // Address 0x3D for 128x64
   { 
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }
  delay(2000);
  display.clearDisplay();// 清除显示
  display.setTextSize(2);// 设置文本大小
  display.setTextColor(WHITE);// 设置文本颜色
  display.setCursor(0, 30);//设置显示坐标
  // Display static text
  display.println("naiva");// 
  display.display(); // 屏幕上实际显示文本
}

 

void loop() {
//  //testscrolltext();
//  display.clearDisplay();
//  display.setTextSize(1); // 
//  display.setTextColor(WHITE);
//  display.setCursor(10, 0);
//  display.println(F("naiva"));
//  display.display();      //
  delay(100);
  display.startscrollright(0x00, 0x0F);//  从左到右滚动文本
  delay(4000);
  display.stopscroll();// 停止滚动
  delay(1000);
  display.startscrollleft(0x00, 0x0F);//  从右到左滚动文本
  delay(4000);
  display.stopscroll();
  delay(1000);
}

void testscrolltext(void) {
  display.clearDisplay();

  display.setTextSize(2); // Draw 2X-scale text
  display.setTextColor(WHITE);
  display.setCursor(10, 0);
  display.println(F("NAIVA415"));
  display.display();      // Show initial text
  delay(100);

  // Scroll in various directions, pausing in-between:
  display.startscrollright(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrollleft(0x00, 0x0F);
  delay(2000);
  display.stopscroll();
  delay(1000);
  display.startscrolldiagright(0x00, 0x07);
  delay(2000);
  display.startscrolldiagleft(0x00, 0x07);
  delay(2000);
  display.stopscroll();
  delay(1000);
}


 

  • 0
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值