- ColorduinoPlasma sketch and Colorduino library v1.2.6 (lincomatic @ fff7bd3) - ColorduinoMatrixTest hardware test sketch - web/index.html: bit-accurate port of the plasma with large resolutions - prebuilt 16 MHz firmware (with and without Optiboot) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
85 lines
3.4 KiB
Markdown
85 lines
3.4 KiB
Markdown
# colorduino-plasma
|
||
|
||
The classic **ColorduinoPlasma** demo for the ITead Colorduino 8×8 RGB LED matrix, plus a
|
||
**browser simulator** that renders the exact same effect on your PC — at the original 8×8 or at
|
||
much higher resolutions.
|
||
|
||
## Contents
|
||
|
||
| Path | What |
|
||
|---|---|
|
||
| `arduino/ColorduinoPlasma/` | The plasma demo sketch (from the lincomatic Colorduino library) |
|
||
| `arduino/ColorduinoMatrixTest/` | Hardware test: full colours, row/column scan, per-LED walk, brightness ramps, checkerboard |
|
||
| `libraries/Colorduino/` | Colorduino library v1.2.6 by Sam C. Lin ([lincomatic/Colorduino](https://github.com/lincomatic/Colorduino) @ `fff7bd3`) |
|
||
| `web/index.html` | Browser simulator — open it directly, no server needed |
|
||
| `firmware/` | Prebuilt hex files for ATmega328(P/PB) @ 16 MHz |
|
||
|
||
## Browser simulator
|
||
|
||
Open `web/index.html` in any browser.
|
||
|
||
It is a straight port of `plasma_morph()` / `HSVtoRGB()` and matches the AVR build bit for bit
|
||
as closely as possible:
|
||
|
||
- all maths in 32-bit float (`Math.fround`), like `double` = `float` on AVR
|
||
- the hue cast `(unsigned char)(value * 128)` **wraps negative values** (two's complement),
|
||
which is what avr-libc's `__fixunssfsi` does — clamping to 0 would give a very different image
|
||
- same `gamma8` table, same start value `paletteShift = 128000`
|
||
|
||
Controls:
|
||
|
||
- **Width / Height** — the plasma is an infinite field; a larger grid shows more of it.
|
||
The Colorduino shows the top-left 8×8 (toggle *Mark 8×8 area*).
|
||
- **Detail** — sub-samples between LED positions, so the same area renders smoothly.
|
||
- **Colour** — *LED light* converts the gamma-corrected PWM values (linear light) to sRGB so it
|
||
looks like the LEDs; *Raw PWM values* shows the bytes sent to the DM163; *Without gamma table*
|
||
skips the gamma lookup.
|
||
- **Speed**, **Rotate**, **LED dots**, pause (Space), step (→), fullscreen (F).
|
||
|
||
The board's white balance (`{36, 63, 63}`) is an LED current correction and is not applied on screen.
|
||
|
||
## Building the sketches
|
||
|
||
1. Copy `libraries/Colorduino` into your Arduino `libraries` folder
|
||
(e.g. `Documents/Arduino/libraries/Colorduino`).
|
||
2. Open a sketch from `arduino/`, select board **Arduino Uno**, and build.
|
||
|
||
With arduino-cli, no install needed:
|
||
|
||
```bash
|
||
arduino-cli compile -b arduino:avr:uno --library libraries/Colorduino arduino/ColorduinoPlasma
|
||
```
|
||
|
||
> The library drives all of PORTD (including RX/TX), so `Serial` can't be used alongside it.
|
||
|
||
## Flashing
|
||
|
||
### Over serial (bootloader present)
|
||
|
||
Connect a USB-serial adapter (FTDI-style, with DTR for auto-reset) to the Colorduino's serial
|
||
header and upload as **Arduino Uno** (Optiboot, 115200 baud).
|
||
|
||
### Over ISP (Arduino as ISP)
|
||
|
||
A normal ISP write erases the chip, including the bootloader. Flash the combined image to keep it:
|
||
|
||
```bash
|
||
avrdude -p m328pb -c stk500v1 -P COM16 -b 19200 -U flash:w:firmware/ColorduinoPlasma_16MHz_optiboot.hex:i
|
||
```
|
||
|
||
Use `-p m328p` if your board has an ATmega328P (signature `1E 95 0F`) rather than a 328PB
|
||
(`1E 95 16`).
|
||
|
||
Fuses used here (16 MHz crystal, 512-byte Optiboot boot section):
|
||
|
||
| low | high | extended |
|
||
|---|---|---|
|
||
| `0xFF` | `0xD6` | `0xF5` |
|
||
|
||
## License
|
||
|
||
The sketches, the library and the simulator (a port of the sketch) are licensed under the
|
||
GNU LGPL v2.1 or later — see [LICENSE](LICENSE). Original copyrights: Sam C. Lin (Colorduino
|
||
library and demo), Ben Combee, Ken Corey, Windell H. Oskay (color cycling plasma),
|
||
zzy@IteadStudio. The library folder includes its upstream `COPYING` file.
|