Skip to content

POWER-PILL/ASCII-Aquarium

Repository files navigation

Meet the ASCII Aquarium ><(((°>

A tiny animated ASCII fish tank for the ESP32-2432S028R Cheap Yellow Display.

Flash it from the browser, tap to feed the fish, tune the tank, sync the clock over Wi-Fi, and let the punctuation swim.

Flash ASCII Aquarium CYD

ASCII Aquarium turns the common 320x240 CYD touchscreen into a living little desktop aquarium with swimming ASCII fish, rising bubbles, swaying seaweed, tap-to-feed flakes, occasional octopus and seahorse visitors, touch controls, Wi-Fi time sync, persistent settings, and SD-card screenshot capture.

It is not a video loop. The aquarium is rendered live on the ESP32, with fish that wander, school, turn around, change brightness, avoid each other, and chase food when you tap the glass.

ASCII Aquarium Title Screen

Check out the article on Hackaday! https://hackaday.com/2026/05/24/adorable-ascii-aquarium-lives-on-your-desk

GIFs of the ASCII AQUARIUM in Action }>{{{{• >

Settings Feeding the Fish

ASCII Aquarium Web Flasher >)))'>

The easiest way to install ASCII Aquarium is with the browser flasher:

Flash ASCII Aquarium CYD

You will need:

  • A supported CYD board connected by a USB data cable.
  • Chrome, Edge or latest Firefox Browser on a desktop or laptop computer.
  • The Arduino IDE Serial Monitor closed, if it was open.

Open the flasher page, click Flash ASCII Aquarium, choose the CYD serial port, and let the installer finish.

Supported Hardware: CYD, CYD2USB & JC3248w535

This firmware is built for the ESP32-2432S028R "Cheap Yellow Display" board:

https://www.aliexpress.com/item/1005004971720824.html https://www.amazon.com/dp/B0FJQ6RK39

  • ESP32
  • ILI9341 320x240 display
  • XPT2046 resistive touchscreen
  • Optional SD card support for BMP screenshots and frame capture

Other CYD-style boards may look similar but use different display, touch, or SD hardware.

Support has now been added for the CYD2USB variant of the board courtesy of @mjpcomp

Also, we have preliminary support for the much nicer JC3248w535 board!

Use the web flasher to flash either of these new firmwares to your board!

3D Printed 2.8" CYD Cases ><((((>`

Features >(°)>

  • Animated ASCII fish with multiple glyph species, varied colours, depth shading, smooth wraparound, schooling, wandering, and separation behaviuor.
  • Tap-to-feed flakes that nearby fish chase down.
  • Configurable fish population from 6 to 36.
  • Configurable bubble count from 0 to 50.
  • Animated bubbles and seaweed with adjustable sway, length, and randomness.
  • Visiting octopus and seahorse characters with selectable spawn rates.
  • Fish steer around visitors and each other.
  • Background styles: black, blue fade, purple fade, and randomized Spongebob style flower backdrop.
  • Touch settings menu with Tank, Seaweed, Clock, and Background tabs.
  • Optional on-screen clock with manual time or internet time.
  • 12-hour and 24-hour clock formats.
  • Timezone selection, small top or bottom clock, large ASCII clock style, and clock colour picker.
  • Wi-Fi panel with network scan, saved credentials, on-screen keyboard, reconnect handling, and NTP time sync.
  • Persistent settings using ESP32 Preferences.
  • SD-card BMP screenshots and frame sequence capture. (NOTE - in build 2.18 The CYD will need to be reset after taking screenshots or sequences)
  • Hidden HUD controls for setup, capture, Wi-Fi, settings, quick creature tests, respawn, and randomize.

New Features in 2.20 ><((((>`

Detailed Release Notes for 2.20 can be found here.

  • New Overhauled background system with new smoother dithered gradients
  • New background colours available
  • New smooth background option
  • New LCD Backlight and RGB Ambient LED colour and brightness control
  • New Ambient LED Control can link to background colour, or use a different colour
  • New CD Backlight and RGB Ambient LED Light Schedule and Tap to wake functionality. Thank you to @mjpcomp for the suggestion.
  • New Timed events setting with Auto feeding. This is great if you're using the beam splitter since you can't tap the screen. Thank you to @mjpcomp for the suggestion.
  • 20 new Selectable ASCII clock fonts
  • Various Bug fixes

GIFs of some of the New Features in v2.20 }>{{{{• >

New ASCII Fonts ASCII Aquarium v2.20 Auto-Feeding

Basic Controls ><((((*>

• Tap the top-left corner to reveal the hidden HUD.

• Tap the tank to drop food.

• Use the settings panel to tune fish, bubbles, visitors, seaweed, clock, and backgrounds.

• Use the Wi-Fi panel to connect to a network and sync internet time.

• Use the capture panel to save BMP sequences to the SD Card. BEWARE - this is EXTREMELY slow since the fishtank simulation is slowed down to allow every frame to be captured.

• Press and hold the BOOT button on the back of the CYD to save BMP screenshots to the SD card. You will need to reboot the CYD after Screenshot or sequence capture

ASCII Aquarium v2.20 Settings

Using the Beam Splitter cube Display ><>

This build can also use a 50 mm beam splitter cube to give the aquarium a little "floating in glass" look.

A beam splitter cube is made from two glass prisms joined together with a partially reflective diagonal layer inside. When the CYD screen shines into the cube, some of that light passes through and some of it reflects off the internal 45-degree surface. To your eyes, the aquarium appears to hover inside the cube instead of just sitting flat on the display. It is basically a tiny optical tide pool.

If using the clock with the beam splitter cube, you will need to enable “flip clock” in the clock style settings window.

• Use the 50 mm cube size for this printed stand.

• Handle the cube by the edges and wipe fingerprints with a clean micro-fiber cloth. Smudges are the enemy of premium fish.

• Seat the cube squarely in the holder so the clear face points toward the viewer.

• Keep the display bright and the surrounding room a little dimmer if you want the fish to really pop.

• A dark base or darker background behind the cube helps the reflection look cleaner.

• If the image looks faint, doubled, or not quite centred, rotate or flip the cube and try again. Beam splitters can be a bit fin-icky about orientation.

ASCII Aquarium Holo Cube

The cube does not create the animation by itself; the CYD is still doing all the swimming, bubbling, clocking, and snack-chasing. The cube just splits and redirects the light so the tank feels more like a miniature glass aquarium and less like a bare screen. No water required, unless you count the tears of anyone who bought a real aquarium and then learned about water changes.

Build From Source ><>

The main Arduino sketch lives here:

ASCII_Aquarium_CYD/ASCII_Aquarium_CYD_2.20.ino

The sketch expects the CYD display and touch configuration used by the included TFT_eSPI setup files:

User_Setup.h
User_Setup_Select_CYD.h

To build manually:

  1. Open ASCII_Aquarium_CYD.ino in the Arduino IDE.
  2. Select the same ESP32 board/settings used for your CYD.
  3. Make sure TFT_eSPI is using the included CYD setup.
  4. Compile and upload through the Arduino IDE.

For browser flashing releases, use Arduino IDE's Export Compiled Binary and publish the generated merged firmware binary.

Project Notes >°>

ASCII Aquarium CYD is part clock, part screensaver, part tiny art object, and part excuse to make fish-shaped punctuation swim around like it has somewhere important to be.

No water changes. No tank cycling. No surprise snails. Just plug it in and let the current take care of itself.

About

ASCII Aquarium turns your Cheap Yellow Display into an tiny animated ASCII fish tank. It renders a live aquarium scene with animated fish, bubbles, swaying seaweed, tap-to-feed food flakes, occasional octopus & seahorse visitors, selectable backgrounds, preferences, optional Wi-Fi clock sync, & More!

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors