A split-flap style YouTube subscriber and Instagram follower counter for the ESP32 Cheap Yellow Display (ESP32-2432S028R).
The 2.8" TFT shows your follower counts with a mechanical split-flap animation — dark panels with amber text that flip through digits just like an airport departure board. It alternates between YouTube and Instagram, displaying the platform logo alongside the count.
All settings (WiFi credentials, API keys, display brightness, animation speed, and timing) are configurable through a built-in web interface.
- ESP32-2432S028R "Cheap Yellow Display" (CYD)
- ESP32-WROOM-32, 2.8" ILI9341 TFT (240×320), resistive touch
- AliExpress
No additional wiring or components needed — the CYD is an all-in-one board.
Install these from the Arduino Library Manager:
| Library | Author | Purpose |
|---|---|---|
TFT_eSPI |
Bodmer | TFT display driver |
ArduinoJson |
Benoît Blanchon | JSON parsing for API responses |
The following are included with the ESP32 Arduino core:
WiFi,WiFiClientSecure,HTTPClientWebServerPreferencesSPI
In Arduino IDE: File → Preferences → Additional Boards Manager URLs, add:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
Then install "ESP32 by Espressif Systems" from the Boards Manager.
Copy the included User_Setup.h into your TFT_eSPI library folder, replacing the existing file:
- macOS:
~/Documents/Arduino/libraries/TFT_eSPI/User_Setup.h - Windows:
C:\Users\<YOU>\Documents\Arduino\libraries\TFT_eSPI\User_Setup.h
This configures the correct ILI9341 driver and CYD pin mapping.
In Arduino IDE:
- Board: ESP32 Dev Module
- Upload Speed: 921600
- Flash Size: 4MB
Open SplitFlapCounter.ino and upload to your CYD.
- On first boot, edit the default WiFi credentials in the sketch, or connect to the serial console to find the IP address.
- Navigate to the device's IP address in a web browser.
- Enter your YouTube API key, Channel ID, Instagram token, and User ID.
- Adjust display brightness, flip animation speed, and switching interval.
- Click Save Settings.
- Go to the Google Cloud Console
- Create a project and enable the YouTube Data API v3
- Create an API key
- Find your Channel ID at youtube.com/account_advanced
- Create a Meta Developer App
- Add the Instagram product and configure business login
- Generate an access token (valid for 60 days)
- Find your User ID via the Graph API Explorer
The web interface includes a token refresh button and automatic renewal at 45 days.
Full instructions are the same as the 8x32 WOPR Display project.
- WiFi configuration
- YouTube and Instagram API key management
- API key testing (test buttons verify keys without saving)
- Instagram token refresh/extend with auto-renewal at 45 days
- Display brightness (0-100%)
- Flip animation speed
- Platform switch interval
- Data fetch interval
- Enable/disable Instagram display
- Enable/disable channel/account name row
- Enable/disable splitflap click sound
- Custom display lines with per-line hold timers (up to 10)
- Manual platform switch trigger
- Reboot button
- Connects to WiFi (falls back to AP mode for 2 minutes if saved network unavailable)
- Fetches YouTube subscriber count and channel name, Instagram follower count and username
- Displays the YouTube channel name (top row, all flaps simultaneously) and subscriber count (bottom row, sequential right-to-left) with splitflap animation and mechanical click sound
- After a configurable interval, flips to Instagram follower count with username
- Custom text lines display after follower counts, each with independent hold timers
- Repeats, periodically re-fetching fresh data
- Web server runs continuously for configuration changes
- Colors: Edit
SF_TEXT,SF_PANEL,SF_BGinsplitflap.h - Cell size: Adjust cell dimensions via
begin()parameters in the .ino - Animation speed: Change
SF_ANIM_FRAMESinsplitflap.hor Flip Speed in the web UI - Logos: Modify the procedural drawing functions in
logos.h - Sound: Toggle splitflap click sound on/off in the web UI
- Channel names: Toggle the name row display on/off in the web UI
- Custom messages: Add up to 10 custom text lines with individual hold timers via the web UI
MIT License
Designed by Midwest Gadgets