add post
This commit is contained in:
@@ -10,7 +10,6 @@ hidemeta: false
|
|||||||
comments: false
|
comments: false
|
||||||
description: "Desc Text."
|
description: "Desc Text."
|
||||||
canonicalURL: "https://canonical.url/to/page"
|
canonicalURL: "https://canonical.url/to/page"
|
||||||
disableHLJS: true # to disable highlightjs
|
|
||||||
disableShare: false
|
disableShare: false
|
||||||
disableHLJS: false
|
disableHLJS: false
|
||||||
hideSummary: false
|
hideSummary: false
|
||||||
|
|||||||
@@ -10,7 +10,6 @@ hidemeta: false
|
|||||||
comments: false
|
comments: false
|
||||||
description: "Enhancing given environments to avoid extra work."
|
description: "Enhancing given environments to avoid extra work."
|
||||||
canonicalURL: "https://canonical.url/to/page"
|
canonicalURL: "https://canonical.url/to/page"
|
||||||
disableHLJS: true # to disable highlightjs
|
|
||||||
disableShare: false
|
disableShare: false
|
||||||
disableHLJS: false
|
disableHLJS: false
|
||||||
hideSummary: false
|
hideSummary: false
|
||||||
|
|||||||
52
content/projects/esp32-display/index.md
Normal file
52
content/projects/esp32-display/index.md
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
---
|
||||||
|
title: "Esp32 OLED Counter Display"
|
||||||
|
date: 2025-11-10T19:10:33+02:00
|
||||||
|
tags: []
|
||||||
|
author: "Elias Ahokas"
|
||||||
|
showToc: true
|
||||||
|
TocOpen: false
|
||||||
|
draft: false
|
||||||
|
hidemeta: false
|
||||||
|
comments: false
|
||||||
|
description: "Desc Text."
|
||||||
|
canonicalURL: "https://canonical.url/to/page"
|
||||||
|
disableShare: false
|
||||||
|
disableHLJS: false
|
||||||
|
hideSummary: false
|
||||||
|
searchHidden: false
|
||||||
|
ShowReadingTime: true
|
||||||
|
ShowBreadCrumbs: true
|
||||||
|
ShowPostNavLinks: true
|
||||||
|
ShowWordCount: true
|
||||||
|
ShowRssButtonInSectionTermList: true
|
||||||
|
UseHugoToc: true
|
||||||
|
cover:
|
||||||
|
image: ""
|
||||||
|
alt: ""
|
||||||
|
caption: ""
|
||||||
|
relative: false
|
||||||
|
hidden: true
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Integrating LVGL embedded graphics library with SSD1306 OLED display on ESP32.
|
||||||
|
|
||||||
|
[Source code](https://git.sirian.me/sirian/oled-counter-esp32/src/branch/main)
|
||||||
|
|
||||||
|
## Project goal
|
||||||
|
|
||||||
|
Get LVGL working on a 128x64 monochrome OLED display connected to ESP32 with I2C. Quick googling resulted only in outdated libraries. This implementation uses the latest libraries to ensure future proofing.
|
||||||
|
|
||||||
|
## Main challenge
|
||||||
|
|
||||||
|
LVGL outputs pixels in a linear framebuffer format but the display uses page addressing where the screen is divided into 8 horizontal pages of 128x8 pixels. Required implementing a custom flush callback to convert between these formats.
|
||||||
|
|
||||||
|
## Implementation
|
||||||
|
|
||||||
|
- Custom I2C driver for SSD1306 using ESP-IDF's master driver API
|
||||||
|
- Multi-threaded FreeRTOS architecture separating rendering, display updates and application logic
|
||||||
|
- Pixel format conversion algorithm for transforming LVGL's I1 framebuffer to SSD1306 page format
|
||||||
|
- Queue based page transmission system for non blocking I2C operations
|
||||||
|
- Semaphore protected flush pipeline ensuring thread safe rendering
|
||||||
BIN
content/projects/esp32-display/photo_2025-11-10_15-36-01.jpg
Normal file
BIN
content/projects/esp32-display/photo_2025-11-10_15-36-01.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 246 KiB |
@@ -10,7 +10,6 @@ hidemeta: false
|
|||||||
comments: false
|
comments: false
|
||||||
description: "Desc Text."
|
description: "Desc Text."
|
||||||
canonicalURL: "https://canonical.url/to/page"
|
canonicalURL: "https://canonical.url/to/page"
|
||||||
disableHLJS: true # to disable highlightjs
|
|
||||||
disableShare: false
|
disableShare: false
|
||||||
disableHLJS: false
|
disableHLJS: false
|
||||||
hideSummary: false
|
hideSummary: false
|
||||||
|
|||||||
Reference in New Issue
Block a user