arduino+esp32+oled

这篇博客介绍了如何在Arduino环境下利用U8g2库来控制SSD1306 OLED显示屏,展示了如何设置字体、绘制图形以及更新屏幕内容。代码示例包括了绘制Logo和显示URL的功能,并提到了ESP32和ESP8266设备上的软件I2C使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用U8g2库

#include <Arduino.h>
#include <U8g2lib.h>

U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /* clock=*/ 23, /* data=*/ 19, /* reset=*/ U8X8_PIN_NONE); //scl  sda

void setup(void) {
   u8g2.begin();
}

void drawLogo(void)
{
    u8g2.setFontMode(1);	// Transparent
#ifdef MINI_LOGO

    u8g2.setFontDirection(0);
    u8g2.setFont(u8g2_font_inb16_mf);
    u8g2.drawStr(0, 22, "U");
    
    u8g2.setFontDirection(1);
    u8g2.setFont(u8g2_font_inb19_mn);
    u8g2.drawStr(14,8,"8");
    
    u8g2.setFontDirection(0);
    u8g2.setFont(u8g2_font_inb16_mf);
    u8g2.drawStr(36,22,"g");
    u8g2.drawStr(48,22,"\xb2");
    
    u8g2.drawHLine(2, 25, 34);
    u8g2.drawHLine(3, 26, 34);
    u8g2.drawVLine(32, 22, 12);
    u8g2.drawVLine(33, 23, 12);
#else

    u8g2.setFontDirection(0);
    u8g2.setFont(u8g2_font_inb24_mf);
    u8g2.drawStr(0, 30, "U");
    
    u8g2.setFontDirection(1);
    u8g2.setFont(u8g2_font_inb30_mn);
    u8g2.drawStr(21,8,"8");
        
    u8g2.setFontDirection(0);
    u8g2.setFont(u8g2_font_inb24_mf);
    u8g2.drawStr(51,30,"g");
    u8g2.drawStr(67,30,"\xb2");
    
    u8g2.drawHLine(2, 35, 47);
    u8g2.drawHLine(3, 36, 47);
    u8g2.drawVLine(45, 32, 12);
    u8g2.drawVLine(46, 33, 12);
    
#endif
}

void drawURL(void)
{
#ifndef MINI_LOGO
  u8g2.setFont(u8g2_font_4x6_tr);
  if ( u8g2.getDisplayHeight() < 59 )
  {
    u8g2.drawStr(89,20,"github.com");
    u8g2.drawStr(73,29,"/olikraus/u8g2");
  }
  else
  {
    u8g2.drawStr(1,54,"github.com/olikraus/u8g2");
  }
#endif
}

void loop(void) {
  u8g2.clearBuffer();
  drawLogo();
  drawURL();
  u8g2.sendBuffer();
  delay(1000);
}

使用SSD1306

此处使用的是SSD1306库和Adafruit_SSD1306是有区别的
在这里插入图片描述

#include "SSD1306.h"

SSD1306 display(0x3c, 19, 23);  //address sda scl

void setup() {
  display.init();
  display.setFont(ArialMT_Plain_24);
  display.drawString(0, 0, "Hello World");
  display.display();
  delay(1000);
}

void loop(void) {
}

 esp32以及esp8266使用的均为软件iic,在硬件管脚中并没有明确的注明iic具体位置,在开发时,我们可以使用esp32或者esp8266的GPIO引脚充当iic引脚。

要使用Arduino实现ESP32连接OLED模块,你需要先准备以下材料: - ESP32开发板 - OLED显示屏 - 杜邦线 然后,按照以下步骤进行操作: 1. 连接OLED模块和ESP32开发板 将OLED模块的GND,VCC,SCL和SDA引脚分别连接到ESP32开发板的GND,3V3,GPIO22和GPIO21引脚。具体连接方式可参照OLED模块和ESP32开发板的引脚定义。 2. 安装ESP32库 打开Arduino IDE,点击“工具”->“开发板”->“开发板管理器”,搜索“ESP32”,安装“ESP32 by Espressif Systems”库。 3. 导入OLED库 点击“工具”->“库管理器”,搜索“Adafruit SSD1306”,安装“Adafruit SSD1306”库。 4. 编写代码 打开Arduino IDE,新建一个空白文件,复制以下代码到文件中: ``` #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_ADDR 0x3C #define OLED_SDA 21 #define OLED_SCL 22 Adafruit_SSD1306 display(128, 64, &Wire, OLED_ADDR); void setup() { display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.display(); delay(2000); display.clearDisplay(); } void loop() { display.setCursor(0, 0); display.setTextSize(1); display.setTextColor(WHITE); display.println("Hello, world!"); display.display(); delay(1000); display.clearDisplay(); } ``` 5. 上传代码 将ESP32开发板通过USB连接到电脑,选择正确的开发板和端口,点击“上传”按钮,上传代码到ESP32开发板。 6. 查看效果 上传成功后,OLED模块上应该会显示“Hello, world!”字样,每秒钟刷新一次。如果没有显示或者显示有误,请检查连接是否正确。 以上就是使用Arduino实现ESP32连接OLED模块的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

摸鱼带师小弟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值