purzbeats/esp32-147b-genart — explained in plain English
Analysis updated 2026-06-24
Flash four ready-made generative art animations onto an ESP32-S3 with a 1.47B screen using the Arduino toolchain
Learn dual-core Arduino programming by studying how this project overlaps frame calculation and screen output across two processor cores
Use the falling-sand simulation as a starting point for your own physics-based embedded art project
| purzbeats/esp32-147b-genart | eversinc33/karyo | haritha-08/esp32_test | |
|---|---|---|---|
| Stars | 17 | 17 | 17 |
| Language | C++ | C++ | C++ |
| Setup difficulty | hard | hard | moderate |
| Complexity | 3/5 | 5/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Requires an ESP32-S3 board with the specific 1.47B screen variant, the backlight pin differs from common variants and using the wrong pin leaves the screen dark.
This project runs animated generative art on a tiny 1.47-inch screen attached to an ESP32-S3 microcontroller board. The screen is about the size of a postage stamp, with a resolution of 172 by 320 pixels, and the board is a small, inexpensive piece of hardware typically used for hobby electronics projects. The code produces four looping visual effects that you can switch between by pressing a button on the board. The main effect is a falling-sand simulation. Colored grains of sand fall from an emitter at the top of the screen, pile up at the bottom, and get nudged sideways by a simulated breeze. The palette of colors, the wind strength, and the spray pattern are randomized each time you power the board on, so each run looks different. When the sand pile gets too high, it avalanche-resets and starts over. The other three effects are a soft flowing plasma (blobs of color moving through each other), concentric expanding rings, and a moiré interference pattern made from overlapping sine waves. Getting all four effects to run smoothly required some engineering work. The board has two processor cores, and the code uses both: one core calculates the next frame while the other simultaneously sends the previous frame to the screen over a high-speed data connection. This overlap means the device can display about 91 frames per second, which is the physical limit of the screen's data interface. The README includes a notable hardware warning: the specific board variant used here (the "1.47B") has its screen backlight wired to a different pin than the more common variant, and using the wrong pin leaves the screen working but completely dark. The developer documented this after spending several days debugging it. The project is written in C++ using the Arduino development framework and a display library called LovyanGFX. A planned next step is to wire up the board's built-in motion sensor so that tilting the board physically changes where the sand falls.
C++ firmware for an ESP32-S3 microcontroller that plays four looping generative art animations on a postage-stamp-sized 1.47-inch screen at 91 fps using dual-core processing.
Mainly C++. The stack also includes C++, Arduino, LovyanGFX.
No license information was provided in the explanation.
Setup difficulty is rated hard, with roughly 1h+ to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.