Rainbowdash
Fork of the Rainbowdash Rainbowduino firmware (http://code.google.com/p/rainbowdash/)
Install / Use
/learn @hackup/RainbowdashREADME
R a i n b o w D a s h b o a r d
advanced rainbowduino firmware
(c) 2011 Kreative Software
RainbowDashboard is a third-party firmware for the Rainbowduino by Seeed Studio. Among its features:
- Clean, maintainable code base.
- Compatible with standard firmware.
- Supports UART mode (no Arduino host needed - talk to Rainbowduino directly).
- Double-buffered graphics operations.
- Software real-time clock.
- Animation driven by the Rainbowduino itself.
- Full Windows ANSI (CP1252) character set.
- High-level command set.
DirectMode
DirectMode is a rewrite of the standard direct-mode firmware.
Write 96 bytes of raw pixel data to show an image on the LED display. The data is organized channel-by-channel in green, red, blue order; row-by-row; then column-by-column, with one byte per two columns.
CommandMode
CommandMode is a rewrite of the standard command-mode firmware.
Commands have the following format:
52 - the header, an ASCII 'R' cc - the command number sr - the column number; the red channel gb - the green channel; the blue channel ii - the image number, ASCII value, or row number
The following commands are supported:
52 01 s0 00 ii - SHOW_IMAGE: Displays a hard-coded image. 52 02 sr gb ii - SHOW_CHARACTER: Displays an 8x8 ASCII character. 52 03 0r gb 00 - SHOW_COLOR: Displays a solid color. 52 04 sr gb ii - SHOW_PIXEL: Sets an individual pixel on the display.
CommandMode has all the same restrictions as the standard firmware: only five built-in images, only letters and digits, and only the commands listed above. The only extra is the SHOW_PIXEL command, as it is a common modification, and the Rainbowduino is close to useless without it.
RainbowDash
The RainbowDash directory contains the main attraction, the RainbowDashboard firmware itself. RainbowDashboard operates similarly to command mode, but supports four types of commands instead of just one.
Short commands have the same format as standard command mode:
52 - the header, an ASCII 'R' cc - the command number sr - the column number; the red channel gb - the green channel; the blue channel ii - the image number, ASCII value, or row number
Long commands have the following format:
72 - the header, an ASCII 'r' cc - the command number xx - the column number yy - the row number (typically) zz - the picture number, ASCII value, or control channel (typically) rr - the red channel (typically) gg - the green channel (typically) bb - the blue channel (typically)
Short direct-mode commands have the format of an ASCII uppercase 'D' followed by 96 bytes of raw Rainbowduino buffer data in the format used by DirectMode.
Long direct-mode commands have the format of an ASCII lowercase 'd' followed by 256 bytes of raw RainbowDashboard buffer data. The data is organized channel-by-channel in control, red, green, blue order; row-by-row; then column-by-column, with one byte per one column.
RainbowDashboard Commands
RainbowDashboard has 48 commands, listed below in both short and long formats.
All commands that set pixels operate on a temporary buffer to eliminate flicker. SHOW_IMAGE, SHOW_CHARACTER, SHOW_COLOR, and SHOW_PIXEL will immediately switch buffers, so their effects will be immediately visible. Other commands, however, will not switch buffers, so their effects will not be visible until you send the SWAP_BUFFER command.
52 00 00 00 00 - NO_OP: Does nothing. 72 00 00 00 00 00 00 00 - (Command number 0 is guaranteed to be ignored.)
52 01 x0 00 ii - SHOW_IMAGE: Displays a hard-coded image, 72 01 xx yy ii 00 00 00 - with wrap-around.
52 02 xr gb ii - SHOW_CHARACTER: Displays an 8x8 ASCII character 72 02 xx yy ii rr gg bb - (erasing any existing image).
52 03 0r gb 00 - SHOW_COLOR: Displays a solid color 72 03 00 00 cc rr gg bb - or pixel value.
52 04 xr gb yy - SHOW_PIXEL: Sets an individual pixel 72 04 xx yy cc rr gg bb - on the display.
52 05 x0 00 ii - DRAW_IMAGE: Draws a hard-coded image, 72 05 xx yy ii 00 00 00 - without wrap-around.
52 06 xr gb ii - DRAW_CHAR_8x8: Draws an 8x8 ASCII character 72 06 xx yy ii rr gg bb - (on top of an existing image).
52 07 xr gb ii - DRAW_CHAR_4x4: Draws a 4x4 ASCII character 72 07 xx yy ii rr gg bb - (on top of an existing image).
52 08 0r gb 00 - SET_ALL_COLOR: Sets the pixel values 72 08 00 00 cc rr gg bb - of all pixels.
52 09 0r gb yy - SET_ROW_COLOR: Sets the pixel values 72 09 00 yy cc rr gg bb - of all pixels in a row.
52 0A xr gb 00 - SET_COLUMN_COLOR: Sets the pixel values 72 0A xx 00 cc rr gg bb - of all pixels in a column.
52 0B xr gb yy - SET_PIXEL_COLOR: Sets the pixel value 72 0B xx yy cc rr gg bb - of a single pixel.
52 0C 0r gb 00 - SET_ALL_BITMAP: Sets the colors of all pixels 72 0C 00 00 cc rr gg bb - according to a one-bit-per-channel bitmap.
52 0D 0r gb yy - SET_ROW_COLOR: Sets the colors of a row 72 0D 00 yy cc rr gg bb - according to a one-bit-per-channel bitmap.
52 0E xr gb 00 - SET_COLUMN_COLOR: Sets the colors of a column 72 0E xx 00 cc rr gg bb - according to a one-bit-per-channel bitmap.
52 0F xr gb yy - SET_PIXEL_COLOR: Sets the color of one pixel 72 0F xx yy cc rr gg bb - according to a one-bit-per-channel bitmap.
(no short ver) - SET_CLOCK_ADJUST: Adjusts the speed of the software 72 10 00 00 vv vv vv vv - clock to compensate for an inaccurate timer. - See the explanation for the clocktest utility.
(no short ver) - SET_CLOCK_DATE_D: Sets the date (in days since 72 11 00 00 vv vv vv vv - January 1, 1970, UTC) and resets the time.
(no short ver) - SET_CLOCK_DATE_P: Sets the date (in days since 72 12 00 00 vv vv vv vv - January 1, 1970, UTC) without resetting the time.
(no short ver) - SET_CLOCK_TIME: Sets the time 72 13 00 00 vv vv vv vv - (in milliseconds since midnight, UTC).
(no short ver) - SET_CLOCK_ZONE: Sets the time zone 72 14 00 00 vv vv vv vv - (in milliseconds added to UTC).
(no short ver) - SET_CLOCK_DST: Sets daylight saving time 72 15 00 00 vv vv vv vv - (in milliseconds added to standard time).
(no short ver) - SET_REGISTER: Sets a user-defined register value. 72 16 00 ii vv vv vv vv - See the Pixel Format section.
(no short ver) - SET_ANIM_INFO: Sets up an animation slot. 72 17 00 ss aa ll oo dd - See the Animation section.
(no short ver) - SET_ANIM_DATA_1: Sets 1 byte of animation data. 72 18 00 aa v1 00 00 00 - See the Animation section.
(no short ver) - SET_ANIM_DATA_2: Sets 2 bytes of animation data. 72 19 00 aa v1 v2 00 00 - See the Animation section.
(no short ver) - SET_ANIM_DATA_3: Sets 3 bytes of animation data. 72 1A 00 aa v1 v2 v3 00 - See the Animation section.
(no short ver) - SET_ANIM_DATA_4: Sets 4 bytes of animation data. 72 1B 00 aa v1 v2 v3 v4 - See the Animation section.
(no short ver) - SET_GAMMA: Sets the gamma for a particular 72 1C 00 ll gg 00 00 00 - brightness level.
(no short ver) - SET_BUFFER: If ff is 1 or 3, sets buffer number 72 1D 00 ff dd ww 00 00 - dd to be the display buffer. If ff is 2 or 3, - sets buffer number ww to be the working buffer.
52 1E 00 00 00 - COPY_BUFFER: Copies the display buffer 72 1E 00 00 00 00 00 00 - into the working buffer.
52 1F 00 00 00 - SWAP_BUFFER: Swaps the display and 72 1F 00 00 00 00 00 00 - working buffers.
52 20 xr gb yy - SCROLL_BUFFER: Scrolls the display x pixels 72 20 xx yy cc rr gg bb - horizontally and y pixels vertically, filling - empty pixels with a color.
52 21 xr gb yy - SCROLL_ROW: Scrolls a row (row y) x pixels 72 21 xx yy cc rr gg bb - horizontally, filling empty pixels with a color.
52 22 xr gb yy - SCROLL_COLUMN: Scrolls a column (column x) y pixels 72 22 xx yy cc rr gg bb - vertically, filling empty pixels with a color.
52 23 x0 00 yy - ROLL_BUFFER: Scrolls the display x pixels 72 23 xx yy 00 00 00 00 - horizontally and y pixels vertically with - wraparound.
52 24 x0 00 yy - ROLL_ROW: Scrolls a row (row y) x pixels 72 24 xx yy 00 00 00 00 - horizontally with wraparound.
52 25 x0 00 yy - ROLL_COLUMN: Scrolls a column (column x) y pixels 72 25 xx yy 00 00 00 00 - vertically with wraparound.
52 26 x0 00 yy - FLIP_BUFFER: Flips the entire display horizontally 72 26 xx yy 00 00 00 00 - (if x is nonzero) and/or vertically (if y is - nonzero).
52 27 00 00 yy - FLIP_ROW: Flips a row 72 27 00 yy 00 00 00 00 - horizontally.
52 28 x0 00 00 - FLIP_COLUMN: Flips a column 72 28 xx 00 00 00 00 00 - vertically.
52 29 00 00 00 - INVERT_BUFFER: Inverts the display 72 29 00 00 00 00 00 00 - (black becomes white and vice versa).
52 2A 00 00 yy - INVERT_ROW: Inverts a row 72 2A 00 yy 00 00 00 00 - (black becomes white and vice versa).
52 2B x0 00 00 - INVERT_COLUMN: Inverts a column 72 2B xx 00 00 00 00 00 - (black becomes white and vice versa).
(no short ver) - DRAW_IMAGE_ROW: Draws a single row of a hard-coded 72 2C dd ss ii 00 00 00 - image. Row s of the image is drawn on row d.
(no short ver) - DRAW_IMAGE_COLUMN: Draws a single column of a 72 2D dd ss ii 00 00 00 - hard-coded image. Column s of the image is drawn
Related Skills
node-connect
339.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
83.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
339.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
83.9kCommit, push, and open a PR
