首页 > 其他分享 >esp32点亮OLED屏幕

esp32点亮OLED屏幕

时间:2022-10-31 08:55:54浏览次数:65  
标签:int16 点亮 esp32 uint8 OLED OLEDDisplay void 对齐 display

esp32点亮4pinOLED屏幕

接线方法

屏幕是4pin的使用iic的协议使用SSD1306屏库

image-20221031080530693

测试代码

#include <Wire.h>
#include "SSD1306.h"

SSD1306 display(0x3c, 21, 18);

void setup() {
  display.init();

  display.setFont(ArialMT_Plain_24);
  display.drawString(0, 0, "Hello World");
  display.display();
}

void loop() {
 
}

实现效果

image-20221031080758400

相关屏库库函数

实例化一个SSD1306Wire对象

SSD1306Wire display(0x3c, 21, 22);

初始化屏幕

display.init();

显示和清除

display.clear();
display.display();

清除某个点 display.clearPixel

void OLEDDisplay::clearPixel(int16_t x, int16_t y)

显示, 显示buf区的内容 display.display

void SSD1306Wire::display()
  1. 把显示屏关掉 display.displayOff();
  2. 把显示屏打开 display.displayOn();
  3. 深度睡眠后恢复 display.allocateBuffer();
    //使用它可以在深度睡眠后恢复而不重置显示(init()会做什么)。
    //如果已建立与显示器的连接并分配了缓冲区,则返回true,否则返回false。
display.allocateBuffer();

屏幕垂直翻转 display.flipScreenVertically();

display.flipScreenVertically();

屏幕镜像显示 display.mirrorScreen();

display.mirrorScreen();

反色显示 display.invertDisplay();

display.invertDisplay();

回归正常显示 display.normalDisplay();

display.normalDisplay();

重新初始化display.resetDisplay();

display.resetDisplay();

重置显示方向 display.resetOrientation();

display.resetOrientation();

设置显示亮度 display.setBrightness();

void OLEDDisplay::setBrightness(uint8_t)

设置对比度 display.setContrast();

void OLEDDisplay::setContrast(uint8_t contrast, uint8_t precharge = (uint8_t)'�', uint8_t comdetect = (uint8_t)'@')

绘制相关库函数

设置一个点 display.setPixel

void OLEDDisplay::setPixel(int16_t x, int16_t y)

画空心圆 display.drawCircle

void OLEDDisplay::drawCircle(int16_t x, int16_t y, int16_t radius)

画实心圆 display.fillCircle

void OLEDDisplay::fillCircle(int16_t x, int16_t y, int16_t radius)

画1/4圆弧 display.drawCircleQuads

void OLEDDisplay::drawCircleQuads(int16_t x0, int16_t y0, int16_t radius, uint8_t quads)//其中: quads是角度
quads 左上 右上 左下 右下
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

画水平线 display.drawHorizontalLine

void OLEDDisplay::drawHorizontalLine(int16_t x, int16_t y, int16_t length)

画垂直线 display.drawVerticalLine

void OLEDDisplay::drawVerticalLine(int16_t x, int16_t y, int16_t length)

画线 display.drawLine

void OLEDDisplay::drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1)

画空心矩形 display.drawRect

void OLEDDisplay::drawRect(int16_t x, int16_t y, int16_t width, int16_t height)

画实心矩形 display.fillRect

void OLEDDisplay::fillRect(int16_t x, int16_t y, int16_t width, int16_t height)

画进度条 display.drawProgressBar

void OLEDDisplay::drawProgressBar(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t progress)

文本相关库函数

设置字体 display.setFont

void OLEDDisplay::setFont(const uint8_t *fontData)
内建字体 字体大小一般为16 字高 字宽 包含字符
ArialMT_Plain_10 13 10 224个字符
ArialMT_Plain_16 19 16 224个字符
ArialMT_Plain_24 28 24 224个字符

设置文本对齐方法 display.setTextAlignment()

void OLEDDisplay::setTextAlignment(OLEDDISPLAY_TEXT_ALIGNMENT textAlignment)

对齐方法有:

对齐方法 描述
TEXT_ALIGN_LEFT 左对齐
TEXT_ALIGN_RIGHT 右对齐
TEXT_ALIGN_CENTER 居中对齐
TEXT_ALIGN_CENTER_BOTH 上下左右对齐

绘制字符串 display.drawString

void OLEDDisplay::drawString(int16_t x, int16_t y, String text)

绘制字符串(带最大宽度) display.drawStringMaxWidth

到达最大宽度回换行显示

图像相关

显示16*16的图标 display.drawIco16x16

void OLEDDisplay::drawIco16x16(int16_t x, int16_t y, const char *ico, bool inverse = false)

显示XBM图像 display.drawXbm

void OLEDDisplay::drawXbm(int16_t x, int16_t y, int16_t width, int16_t height, const uint8_t *xbm)

显示BMP位图图像 display.drawFastImage (未实验)

void OLEDDisplay::drawFastImage(int16_t x, int16_t y, int16_t width, int16_t height, const uint8_t *image)

参考
https://blog.csdn.net/finedayforu/article/details/108769900
https://blog.csdn.net/qq_28877125/article/details/99616323

标签:int16,点亮,esp32,uint8,OLED,OLEDDisplay,void,对齐,display
From: https://www.cnblogs.com/Xin-chen/p/16843080.html

相关文章

  • ESP32系列教程之空中升级OTA
    准备工作配置好开发环境,本文是基于VSCODE+PlatformIO一个可用于联网的WiFi编译一个.bin固件升级程序,并上传得到一个http网址。首先编写一个程序,每隔1s打印hellowo......
  • 基于过程单片机CH32、STM32实现TM1640点亮16位共阴极数码管,显示“0~F”数字
    TM1640入门学习手册实例1EgTM1640——【基于CH32V103】本节我们目标是实现TM1640点亮16位共阴极数码管,显示“0~F”数字;1硬件设计GPIO初始化配置SCL(PB6)SDA(PB7);......
  • ESP32 多线程入门实验
    一、线程创建函数函数voidxTaskCreate(pdTASK_CODEpvTaskCode,constportCHAR*constpcNane,unsignedportSHORTusStackDepth,void*pvParameters,unsigne......
  • ESP32 SNTP校时
    一、连接WIFI在进行时间同步之前,先连接WIFI#include"wifi.h"#include<string.h>#include<stdlib.h>#include"freertos/FreeRTOS.h"#include"freertos/task.h"......
  • ESP32 IDF 获取天气信息
    一、注册天气获取账号我使用的知心天气,没有获取天气账号的小伙伴可以去注册一下,知心天气官网:https://www.seniverse.com/取得天气获取的API后,可以直接在浏览器中访问测试......
  • 联想Filez助力中海地产点亮云化之路
    随着云计算、移动互联网的普及,地产行业也在不断地迭代更新自我的IT信息化水平,以更高效的方式达成核心业务的管控和协同运营,以科技的方式创造更多的商业价值。在行业中一直享......
  • 点亮LED灯(51单片机)
    点亮LED灯(51单片机)不论学习什么样的单片机,最简单的外设莫过于I/O口的高低电平控制实验环境:......
  • esp32-s3-st7796-lvgl8
    1、先按照文档步骤,将基础框架搭建好https://blog.csdn.net/qq_20540901/article/details/1236086552、然后遇到一些花屏、显示不正确等等问题,使用以下的sdkconfig创建默......
  • 基于乐鑫ESP32-C3的2.4寸串口屏应用于智能体脂秤方案
    由于长期不合理饮食习惯的影响,我国肥胖人口数目不断增多,然而随着大众健康意识不断提升,减肥、健身人士增多,全民健身的时代已经到来,这无疑将带动智能体脂秤市场需求的攀升。......
  • esp32把玩记-④ 星星点灯 (点亮led)
    注意全程使用Micropython,不会安装看我第一篇文章感谢正式开始用Thonny烧录(运行)以下代码importtimefrommachineimportPinled=Pin(13,Pin.OUT)led.on()由......