My project is an electronic Art App controlled by Arduino Uno.

The app connects to Arduino port. goes full screen, and starts drawing abstract geometrical figures based on parameters it reads from the Arduino. The user can can control what the app is drawing using potentiometers, switches, and a push button. Everything can be controlled by Arduino, there is no need for keyboard and mouse (after connecting to Arduino port). App can be used for meditation, or just to relax. Drawings can be saved in real time using push button.


Push button 1 – clears app screen

Push button 2 - save the screenshot of the drawing

Switch 1 – Start/Stops drawing

Switch 2 – controls line type. Line type can be an Arc (Bezier curve) or a straight line

Potentiometer 1 – controls line width

Potentiometer 2 – controls an angle for a drawing

Potentiomenter 3 - controls drawing speed


The app itself is written in C#.NET. To communicate between .NET and Arduino I used open source Sharer library, it is awesome and it can be found here:


Fun fact: When testing the board I ran into a problem that all analogRead() functions returned incorrect values. I could not figure out why, it was driving me crazy. I was sure that I fried both of my Arduinos somehow. But finally I figured out that connections on my $1 breadboard were not wired properly. I changed the breadboard and everything started working right away.



Schematics (updated):




Demo video: (can also be found on YouTube: )




Additional demo video for using save screenshots and changing drawing speed



Couple of screenshots:

screenshot 1



screenshot 2




screenshot 3



This is how the board looks like:

Electrinic art app board photo

Arduino code, and NET main module with math and Arduino communication code will be attached soon.

Update: Code on Github:

Before I added "Save screenshot" functionality, the code was cross platform. Now .NET code is Windows specific. To make it cross platform again one need to remove all the functionality related to "Select Windows Dialog" and "Take Screenshot". I am planning to come back to it later.