Skip to content

Conversation

@finger563
Copy link
Contributor

@finger563 finger563 commented Jan 24, 2026

Description

  • Add expressive_eyes component for configurable expressions with support for custom drawing styles.
  • Update CI
  • Update Docs

Motivation and Context

They look nice, and can help to create a nice little desk buddy or robot face

How has this been tested?

Build and run expressive_eyes/example on ESP32-S3-BOX and waveshare touch LCD

Screenshots (if appropriate, e.g. schematic, board, console logs, lab pictures):

happy image sad image
angry image surprised image
sleepy image bored image
wink left image wink right image
looking left image looking right image
looking up image looking down image

Videos:

New:

expressive-eyes-demo-compressed.mp4
Click to show old video

Old:

Expressive.Eyes.2.compressed.mp4

Console output:

image
I (886) main_task: Calling app_main()
[Expressive Eyes Example/I][0.889]: Starting Expressive Eyes Example
[WsS3Touch/I][0.899]: Initializing LCD...
[WsS3Touch/I][0.900]: Initializing SPI...
[WsS3Touch/I][0.906]: Adding device to SPI bus...
[WsS3Touch/I][0.911]: Initializing the display driver...
[WsS3Touch/I][1.321]: Display driver initialized successfully!
W (1322) ledc: the binded timer can't keep alive in sleep
[WsS3Touch/I][1.324]: Initializing display with pixel buffer size: 12000
[WsS3Touch/I][1.334]: Display initialized successfully!
[Expressive Eyes Example/I][1.335]: Display size: 240x280
[Expressive Eyes Example/I][1.342]: Using Monochrome Blue drawer
[Expressive Eyes Example/I][1.392]: Expressive eyes initialized
[Expressive Eyes Example/I][1.392]: Testing different expressions...
[Expressive Eyes Example/I][1.395]: Expression: Neutral
[Expressive Eyes Example/I][11.928]: Expression: Happy
[Expressive Eyes Example/I][22.548]: Expression: Sad
[Expressive Eyes Example/I][33.168]: Expression: Angry
[Expressive Eyes Example/I][43.788]: Expression: Surprised
[Expressive Eyes Example/I][54.407]: Testing look_at functionality
[Expressive Eyes Example/I][54.408]: Looking left
[Expressive Eyes Example/I][59.717]: Looking right
[Expressive Eyes Example/I][65.028]: Looking up
[Expressive Eyes Example/I][70.337]: Looking down
[Expressive Eyes Example/I][75.648]: Looking center
[Expressive Eyes Example/I][80.957]: Starting random demo mode - will run continuously

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation Update
  • Hardware (schematic, board, system design) change
  • Software change

Checklist:

  • My change requires a change to the documentation.
  • I have added / updated the documentation related to this change via either README or WIKI

Software

  • I have added tests to cover my changes.
  • I have updated the .github/workflows/build.yml file to add my new test to the automated cloud build github action.
  • All new and existing tests passed.
  • My code follows the code style of this project.

@github-actions
Copy link

github-actions bot commented Jan 24, 2026

✅Static analysis result - no issues found! ✅

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new ExpressiveEyes display animation component, along with documentation, an ESP-IDF example app, and CI updates so the new component is built and published.

Changes:

  • Introduces components/expressive_eyes (core class + IDF component metadata).
  • Adds an ESP-IDF example with multiple LVGL-based drawing styles and menuconfig options.
  • Updates Sphinx/Doxygen docs and GitHub Actions workflows to include the new component and example.

Reviewed changes

Copilot reviewed 21 out of 21 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
doc/en/display/index.rst Adds Expressive Eyes docs page into the display documentation toctree.
doc/en/display/expressive_eyes_example.md Includes the example README into the docs.
doc/en/display/expressive_eyes.rst New Expressive Eyes feature overview + API reference include.
doc/Doxyfile Adds the ExpressiveEyes header and example to Doxygen inputs/examples.
components/expressive_eyes/src/expressive_eyes.cpp Implements animation logic (blink, look, expression blending) and draw callback invocation.
components/expressive_eyes/include/expressive_eyes.hpp Public API for ExpressiveEyes (config, states, expressions, callback).
components/expressive_eyes/idf_component.yml Registers the component for ESP-IDF component manager publishing.
components/expressive_eyes/example/sdkconfig.defaults Default config values for the example build.
components/expressive_eyes/example/main/monochrome_blue_drawer.hpp Example LVGL renderer: blue monochrome eyes.
components/expressive_eyes/example/main/full_featured_drawer.hpp Example LVGL renderer: white eyes with pupils and background-cut eyebrows/cheeks.
components/expressive_eyes/example/main/eye_drawer.hpp Drawer interface used by the example to provide draw callbacks.
components/expressive_eyes/example/main/expressive_eyes_example.cpp Example app wiring (board init, LVGL canvas, expression/looking demos).
components/expressive_eyes/example/main/README_DRAWERS.md Documents the drawer architecture and how to add new drawers.
components/expressive_eyes/example/main/Kconfig.projbuild Adds menuconfig options for board + drawing method + eye params.
components/expressive_eyes/example/main/CMakeLists.txt Registers the example’s main component with ESP-IDF.
components/expressive_eyes/example/README.md User-facing instructions and description for the example.
components/expressive_eyes/example/CMakeLists.txt ESP-IDF project config for building the example.
components/expressive_eyes/README.md Component README describing features and linking to the example.
components/expressive_eyes/CMakeLists.txt ESP-IDF component registration for expressive_eyes.
.github/workflows/upload_components.yml Adds components/expressive_eyes to publishing workflow.
.github/workflows/build.yml Adds the expressive_eyes example to CI build matrix.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@finger563 finger563 merged commit 4a41ade into main Jan 25, 2026
101 of 103 checks passed
@finger563 finger563 deleted the feat/expressive-eyes branch January 25, 2026 23:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants