Development Document

What is CUBE?

Cube is a programmable tools focus on kids 2 - 7 years old to understand programming flow, debug and troubleshooting. It consists of 2 parts, which is CUBEs, START CUBE, END CUBE and CODED CUBE. And a robot which controlled by CUBE. START CUBE with batteries. When the CODED CUBE connected to START CUBE, it will be powered. Once the END CUBE connected. The robot will move accordingly to what we coded and meantime the CODED CODE will flashing to show what is the current action is carried by robot.


CODED CUBE is flashed with program for respectively function. It could be motion, lighting, sound, distance sensor and other idea that we have no implemented yet. For Motion, it consist of 4 directional code to command the robot via bluetooth for moving to goal. By turning the CODED CUBE in different orientation. The will change accordingly. It is same as lighting, sound and sensors.

cutting artwork.pdf

Layout Design and 3D simulation for casing study

Fitting PCB inside CUBE

Logic Flow for CODED CUBE

Predefine parameter

blockFunction =0

myFunc = 0


myPosition = 0

nextPosition = myPosition + 1


1. Send data “F” out via UART0 -> Received data “numFunction” via UART0 -> update “myFunc” parameter

2. Send “P” out via UART0 -> Received data “nextPosition” via UART0 -> store “myPosition” = “nextPosition”

3. Set 4 switches GPIO function with interrupt -> check the active switch (active Low) and store the data as “detIO” -> use remap function below to get yFunc -> send this data “yFunc” out via UART1

//return yFunc as integer

int remap(int myFunc, int detIO){

if(myFunc == 1){

int gpio[4]= {1,2,3,4};

return gpio[detIO-1];


if(myFunc == 2){

int gpio[4]= {4,1,2,3};

return gpio[detIO-1];


if(myFunc == 3){

int gpio[4]= {3,4,1,2};

return gpio[detIO-1];


if(myFunc == 4){

int gpio[4]= {2,3,4,1};

return gpio[detIO-1];



4. Received “2(position),3(numFunction),0(blockFunction)” via UART1 -> channel data to UART0 -> send out “2(position),3(numFunction),0(blockFunction)” via UART0

5. Received data “P2(position 2)” from UART0 -> check myPosition is match to 2? -> if yes, blink second LED -> if not, send out data “P2(position 2)” via UART1

Logic Flow for END CUBE

1. Send data “L” via UART0 -> idle

Presentation Slide

CUBE- 3D tangible programming.pdf

3D Tangible educational programming learning toy for kids 2 - 7 years old.