Files
colorduino-plasma/README.md
T
mangavalkandClaude Opus 5.5 a18f081e0a Colorduino plasma demo, matrix test and browser simulator
- 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>
2026-11-07 22:28:12 +01:00

3.4 KiB
Raw Blame History

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 @ 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:

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:

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. 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.