Perhaps I’ll start with how I met Seeed …
When I was a child (10 years old), the most wonderful thing came into my hands – the Rainbow Cube Kit. 4x4x4 RGB LED cube. Programmable!

At the same time, someone near me was writing a program for Rainbowduino, and I sat, ate candy and was worried, when would they let me play computer games?


A couple of years ago I found my cube on the floor … It was broken. Then I somehow repaired it and put it back on the shelf. It worked from 2012 to 2017 without stopping, as a nightlight.


Recently, I remembered the presence of a USB port on it, looked for how to program it, learned how to make sketches… But the breakdown and even the result of my repair prevented me from seeing my own work. Then I’ve got the idea to buy parts for repair. As I later learned, they have not existed for a long time, this thing is too old. I bought an 8×8 matrix on eBay and continued to work with it already. But I didn’t stop working to Seeed after my cry for help. Oh yes, it’s worth telling how I met them)

Considering that “Seeed Studio” was written on my device, I searched the Telegram for a chat with same name, and unexpectedly did find the SeeedStudio User Group, in which there were quite a few guys from Seeed as well. I offered them help with the translation into Russian, they agreed. A little later, I was offered to join the ranks of the Seeed Rangers, and I immediately accepted the invitation 🙂


And now, after quite a bit of time, I’m here, writing this post. I am an ordinary guy, by the will of fate met with unusual people. Thanks to the Seeed Studio team, you made me happy)


My RainbowCubes box… Old, but still alive
First letter

Now I’m 17. I’m a programmer. I am interested in the Internet of things and Arduino as a whole. And it’s okay that I’m also a Junior PHP/CSS/HTML/SQL developer. But at the moment I am a Narrator, and in my story I lack many technical aspects.

I will tell you about it and my use of it now. I don’t see interest in just random blinking of each light, so I made myself a 2nd monitor for my computer 🙂
His resolution is 8×8, he can show 1 whole and a little more letter. But nevertheless it works.

To send characters to it, I use the arduino IDE, in particular, the serial port monitor. I send the characters, and he displays them – it’s simple.
But. If it were that simple, it would hardly make sense to write about it. Because I complicated the task.
I made my “monitor” display not one character, but 64 characters one by one. Video about how it works is on YouTube, and here I will tell you how I did it and what exactly this thing can do.


Here is the minimal code to display 64byte-long texts on Rainbowduino. Enjoy making!

This is the beginning 🙂

#include <Rainbowduino.h>

We connected the Rainbowduino library. Go ahead and initialize it!

void setup()
    {
      Serial.begin(9600);//baud 
      Rb.init();
    }

Here we not only initialized the library library but also set the data transmission frequency to 9600 baud (9600 bits per second, 1.2 kilobytes per second)

The next step is program the loop. And here is lot of interesting, so…

    void loop()
    { 
        delay(250); 
        if (Serial.available() > 0) { 
            Rb.blankDisplay(); 
            char in=Serial.read(); 
            Rb.drawChar(in,0,0,0xFFFFFF); 
        } 
    }

Let`s dig out the code!

    void loop()
    { 
delay(250); 
    }

Here we wait BEFORE asking the next letter. 4 letters per second, one letter per every 250 ms. Because 9600 baud means 1200 characters per second, thats not what we needed)

    void loop()
    { 
delay(250); 
if (Serial.available() > 0) { 
} 
    }

If the PC send next letter, do *something* if not, after 250 ms, check once again. If PC isnt responding, letter will be still displayed.

    void loop()
    { 
delay(250); 
if (Serial.available() > 0) { 
Rb.blankDisplay(); 
} 
    }

If we have incoming character, do the cleanscreen and get ready to the next letter.

    void loop()
    { 
delay(250); 
if (Serial.available() > 0) { 
Rb.blankDisplay(); 
char in=Serial.read(); 
} 
    }

Initialize the char, to save the incoming letter for one iteration.

void loop()
{ 
    delay(250); 
    if (Serial.available() > 0) { 
        Rb.blankDisplay(); 
        char in=Serial.read(); 
        Rb.drawChar(in,0,0,0xFFFFFF); 
    } 
}

Now draw collected letter at position 0;0 in white color

Compiled code looks like:

#include <Rainbowduino.h>
void setup()
{
    Serial.begin(9600);//baud 
    Rb.init();
}
void loop()
{ 
    delay(250); 
    if (Serial.available() > 0) { 
        Rb.blankDisplay(); 
        char in=Serial.read(); 
        Rb.drawChar(in,0,0,0x0FFFFFF); 
    } 
}

See how it works:

And thanks for reading. Enjoy making and leave feedback)

Please follow and like us: