LED animation controller for a scale model of the Beta Alia eVTOL aircraft. Features realistic flight simulation with dynamic prop and tail animations.
| Document | Description | QR Code |
|---|---|---|
| GitHub Repo (https://github.com/johncohn/alia_blinky) | Top-level repository — browse, download, or fork | ![]() |
| TUTORIAL.md (https://github.com/johncohn/alia_blinky/blob/main/TUTORIAL.md) | Complete setup and customization guide | ![]() |
| SOLDER.md (https://github.com/johncohn/alia_blinky/blob/main/SOLDER.md) | Photo guide: soldering & gluing the PCB | ![]() |
Version: 1.2.0 Build: 16 Hardware: Supports multiple boards (auto-detected) + 41 WS2812B LEDs
- Seeed XIAO RP2040
- Adafruit QT Py RP2040
- Seeed XIAO ESP32-S3
- Adafruit QT Py ESP32-S3 (no PSRAM)
Auto-cycles through 5 animation patterns:
- FLIGHT (~36s) - Realistic eVTOL flight simulation with 5 phases
- Lift, transition in, conventional flight, transition out, landing
- Non-linear prop acceleration/deceleration
- Counter-rotating props, variable tail speed
- SLOW RAINBOW (10s) - Full rainbow color cycle
- FAST WHITE (10s) - Running white lights with sine wave
- RAINBOW PROPS (10s) - Theater chase rainbow effect
- CUSTOM (10s) - Your editable pattern slot (see Customization below)
- Arduino IDE 2.x
- One of the supported boards (see Hardware section below)
- Adafruit NeoPixel library
-
Get the code
- Open alia_blinky.ino → right-click → Save As → save it as
alia_blinky.ino - (Want the PCB design files or soldering photos too? Grab the full repo instead — see Documentation below.)
- Open alia_blinky.ino → right-click → Save As → save it as
-
Install Board Support
For RP2040 boards:
- Tools → Board → Boards Manager
- Search "rp2040"
- Install "Raspberry Pi Pico/RP2040" (v5.4.3+)
- Select your board:
- Tools → Board → Seeed XIAO RP2040, or
- Tools → Board → Adafruit QT Py RP2040
For ESP32-S3 boards:
- Tools → Board → Boards Manager
- Search "esp32"
- Install "esp32 by Espressif Systems" (v3.3.3+)
- Select your board:
- Tools → Board → esp32 → XIAO_ESP32S3, or
- Tools → Board → esp32 → Adafruit QT Py ESP32-S3 no psram
-
Install Library
- Tools → Manage Libraries
- Search "Adafruit NeoPixel"
- Install (v1.15.2+)
-
Upload
- Open the
alia_blinky.inoyou saved in step 1 - Select your board (step 2) and port
- Click Upload (→)
- Open the
- Prop 1-4: 9 LEDs each (0-8, 9-17, 18-26, 27-35)
- Tail: 5 LEDs (36-40)
The code automatically detects your board and uses the correct GPIO pins. All boards use the same physical pin positions (TX, RX, SCK, MISO):
| Board | Starboard (TX) | Port (RX) | Nose (SCK) | WS2812B (MISO) |
|---|---|---|---|---|
| Seeed XIAO RP2040 | GPIO 0 | GPIO 1 | GPIO 2 | GPIO 4 |
| Adafruit QT Py RP2040 | GPIO 20 | GPIO 5 | GPIO 6 | GPIO 4 |
| Seeed XIAO ESP32-S3 | GPIO 43 | GPIO 44 | GPIO 8 | GPIO 7 |
| Adafruit QT Py ESP32-S3 | GPIO 5 | GPIO 16 | GPIO 36 | GPIO 37 |
Physical Connections:
- TX pin → Starboard navigation light (green)
- RX pin → Port navigation light (red)
- SCK pin → Nose navigation light (white)
- MISO pin → WS2812B data line
alia_blinky_kicad.zip contains complete KiCad project files for a custom PCB. The same PCB works with all supported boards - just swap the microcontroller!
The easiest option: the auto-cycle already includes an editable CUSTOM slot, customPattern() (~line 1073) — just replace its body with one of TUTORIAL.md's sample patterns and re-upload. No other changes needed.
See TUTORIAL.md for that walkthrough, several ready-to-paste samples, and how to add a whole additional pattern (which does require 4 edits):
- Write pattern function in CUSTOM PATTERNS section (~line 1062)
- Update
NUM_PATTERNSconstant (line 78) - Add case to switch statement (line 1194)
- Add name to
subModeNamesarray (line 1179)
Brightness (line 83):
#define brightness 50 // 0-255 (lower for USB-A power)Pattern Duration (line 134):
const int AUTO_CYCLE_DURATION = 10000; // milliseconds- USB-C: 2-3A (recommended)
- USB-A: 500mA (reduce brightness to 25)
- External 5V: 2A+ (best)
Pattern power draw:
- FLIGHT: 0.5-1.0A (sparse LEDs)
- RAINBOW: 2.0-2.5A (all LEDs)
LEDs brownout on USB-A power:
- Reduce brightness to 25
- Use USB-C or external 5V supply
- ESP32-S3 draws more power than RP2040 - use high-power USB port
Compilation errors:
- For RP2040: Ensure arduino-pico core v5.4.3+
- For ESP32: Ensure esp32 core v3.3.3+
- Verify Adafruit NeoPixel library installed
- Check you selected the correct board in Tools → Board
LEDs not working:
- Check serial monitor (115200 baud) - should show detected board type
- Verify correct board selected in Arduino IDE
- Check WS2812B connection (MISO pin - see Pin Assignments table)
- Verify 41 LEDs total
- ESP32-S3: Ensure "no psram" variant selected for QT Py
Wrong board detected:
- Serial monitor shows detected board on startup
- Ensure correct board selected in Tools → Board menu
- Code auto-detects based on compiler flags
- TUTORIAL.md - Complete step-by-step guide
- SOLDER.md - Photo guide for soldering the microcontroller and gluing the diffuser covers
- LICENSE - MIT License
- In-code comments - Extensive documentation throughout
Created by: John Cohn, PhD Original Date: December 2024 Updated: January 2025 (Multi-board support added) Contact: jcohn@beta.team | johncohnvt@gmail.com
Developed with major assistance from Anthropic Claude.
Please reach out if you have comments, questions, or suggestions!
MIT License - Copyright (c) 2024 John Cohn
See LICENSE file for full text.


