Retro graphics on Sony Smartwatch using Arduino (updated)

This is an arduino sketch running on a Sony Smartwatch. I made it during a one day workshop at STPLN, a hackerspace in Malmö. Check out info about the workshop here.

The sketch works by drawing lines and circles inside a for-loop. Two counters are incremented and reset at various conditions. These then control the line and circle parameters, I don’t know really how it works, with these things it’s best usually to experiment until you come up with something that looks nice. I like how it turned out kind of retro-looking.

It was made possible by Sonys opening up of its smartwatch for flashing and firmware hacking and David Cuartielles modifying the Arduino toolset to allow for uploading to the Smartwatch. It’s really early in development, so you will need to figure out a lot by yourself if you want to hack it right now. You will need dfu-util, if you have windows you’ll need mingw and msys and a special version of the Arduino IDE. All of these need to be accessible for your path. This is not for beginners! Full instructions in the new repository link!

You can download my sketch and try it out yourself here! 

Check out the Arduino Smartwatch repository from David Cuartielles!

There’s now a “more official” repository for you to work with, check it here:
https://github.com/underverk/SmartWatch

if you’re interested, here’s the sketch:

////////////////////////////////////////////////
// *** Smartwatch Veqtor-GFX*** //
// Made during Smartwatch Workshop 2013-06-15 //
// Author: Göran Sandström / Veqtor //
// v3qt0r@gmail.com //
// http://www.veqtor.se //
////////////////////////////////////////////////

int x = 0;
int y = 0;

void setup()
{
OLED.begin();
}

void loop()
{
OLED.fillScreen(OLED.Color565(0×00, 0×00, 0×00));

for(int i = 0; i < (y%32); i++)
{

//// MAGIC!!!
OLED.drawCircle((128-(x*0.5))+(i*3), i*4+((i*y)), ((1024-y)/i)%128, OLED.Color565(y, 255-x, 255-(i*7)));
OLED.drawLine(i*4+((i*y)), (128-(x*0.5))+(i*3), i*4+((i*y))-(i%24), (128-(x*0.5))+(i*3)+((i*y)%32), OLED.Color565(255-(i*7), (512-x)%i, (y*7)%256));

}

x++;

if((x%3) == 0) y++;
if(y > 254) y = 0;
if(x > 254) x = 0;

}

Leave a Reply