Software development kit

Welcome to the Software development kit for Rubik’s Futuro Cube. You find here all information how to write, compile and test applications written by yourself or someone else. We are continuosly working on additional extensions.

In 2016 Q1-Q2 we will release complete up to date online documentation, that we are working on just right now. Meanwhile please start with available information here, check latest “futurocube.inc”, which has description of the newest APIs and do not hesitate ask us questions!

Easy steps to start writing applications for Rubik’s Futuro Cube

Write, compile and test your application, report us bugs, ask us for help!

Examples

Example 1 – cursor

Simple example that shows how to get position of cursor and draw it onto the cube. Color is created each time when the cursor is placed. Function printf can be used for various debugging purposes. This example also shows typical drawing sequence, which is usually used in most complex cases:

Example 2 – tapping

This example shows how to easily setup taps to side to be recognized. Also, double tap signal is used for lighting up entire cube. Example also shows how to use palette colors and how to set up them from arrays. Palette colors are those represented by number lower than 256. (lower 8-bits at color value)

Example 3 – walker

This example shows how walk with walker by taping to sides. If tap from same side is detected, walker continues his direction. Orientation of walker can be optionally displayed by debug function DrawTail. If tap from bottom is detected, red color cube is displayed. AdjustCanvas is used to demonstrate how to fade without using FlashCanvas.

Example 4 – paint.mycube

This example shows simple application for painting on the cube with several commands. Serves perfect as MYCUBE script example. Tap from side changes color of brush, tap from top draws with selected brush. Double tap from top fills the top side. Double tap from side runs small animation with music. Double tap from bottom erase whole cube and single tap from bottom moves one action back. This example also shows more advance work with Push Pop Arrays and Variables. Push Pop Array is used for storing actions and variable is used for keeping the art-work in non-volatile memory. If named variable exists, it is loaded every time with animation when the script starts.

Example 5 – animated rubik’s

This example shows simple implementation of rubik’s cube with animated rotations. Direction of rotation is determined by inclination of tapped side. SolveDir function reads accelerometer data and compares them with threshold “ACC_THRESHOLD” for direction. Also each move is stored into variable, so the progress is never lost. Example of correct use of ICON() is demonstrated as well. Note that definition of icon[] must be placed in global namespace!

Example 6 – disco cube

This example shows an easy way to determine time of the tap and how to (not completely accurately) extrapolate it to future time. It does not use mean deviation, so after while it is little bit off beat. If you give 8 taps in a row, cube continues in given rhythm. Double tap resets the rhythm and a new one can be entered by another 8 taps.

HOWTO & FAQ

Is it possible to communicate with cube outside RFC?

Yes, if you connect the cube to computer via USB cable, virtual serial comport become available and it provides simple prompt shell, echo is initially switched off! Simply press few times enter to get answer. Do not forgot to switch off flow control, speed is not important! For all available commands search in SDK manual. Remember, that RFC uses multiplex protocol and it is automatically set up when cube connects first time to RFC. If you would just close RFC, than the multiplex keeps running. To switch back for simple mode, simply cycle USB cable.

Is it possible to use data from CUBE and control LEDs?

Yes, cube shell (connection is described above) offers several commands for retrieving data from accelerometer and commands for full control of all LEDs. Read the SDK manual for more information, commands of interest are: “clr, pled, pleds, pledarr, motion”. Motion is a special command that sends in frequency 125 Hz state information from game state machine. That means not only raw accelerometer data, but for example as well recognized taps.

How shell can communicates with scripts?

FW 4.5 allows to use command “prunf N”, which starts automatically script on N-th position. Future version should be able to start any scripts via its name if present. Also SDK implements standard function “printf(…)” which outputs formatted text to shell line. So this output, even originally designed as debug function, can be parsed by external program. At this moment there is no line that would allow to send message to the script, but it is planned for next update.

Contact form

We will be releasing updates on the regular basis. Feel free to e-mail us with your ideas for new features, or report any problems.
info@futurocube.com