This program, written in Visual Basics, is made to create a virtual screen for your arduino. It uses the serial communication capabilities to send and receive files through the USB interface with your PC.

Several commands are supported, such as text, lines, rectangles and ellipses. Images aren't supported, and probably won't be supported in the next versions either. Because of the limits of the serial communication, you'll have to do everything with those 4 commands.
You can make anything you want: games (such as pong or tetris), or you can use it a screen to read data from your arduino. E.g. it can collect data with a LDR (light dependant resistor), which can be send to the screen and displayed in a box.
In this image you can see the program working with a very simple program.
It just sends the command to print Hello on position (10,10).

Although it's very simple it shows the working of it.
In version 1.0 the program does only read the serial bus when the arduino has send something (event based), while in the first version it was loop based. It send a value to the arduino which commanded it to send its commands.

This means you can now send whenever you want (not only within the specified drawing loop). This makes it a lot more easy and useful.

Included in the download file are the program itself (.exe), the lib files (.cpp, .h and keywords) and an example.

How to use?

1. Attach the arduino to your PC with the USB cable.
2. Start the program
3. Enjoy!


drawString(string, int x, int y);
drawVar(var int, int x, int y);
setFont(string fontname, int fontsize, String style);
drawRect(int x, int y, int w, int h);
fillRect(int x, int y, int w, int h);
drawEllipse(int x, int y, int w, int h);
fillEllipse(int x, int y, int w, int h);
drawLine(int x, int y, int x2, int y2);
setBrush(string color);
setPen(string color, thickness);
string as String, x and y as coordinate
var as int, x and y as coordinate
fontname as "calibri" etc, fontsize as int, style as string: "i", "b" or "r"
x and y as coordinate, w as width int and h as height int
x and y as coordinate, w as width int and h as height int
x and y as coordinate, w as width int and h as height int 
x and y as coordinate, w as width int and h as height int 
x and y as coordinate 1, x2 and y2 as coordinate 2
colorstring as "black", "pink", "yellow" etc.
colorstring as "black", "pink", "yellow" etc., thickness as int
- prints data on the sceen


There are 4 tools that contain some specified settings. 

The first one is the port. This should all work automatically if your Arduino is attached. If not attached, then the program will give a notification.

The second one, the Baudrate, seems quite obvious. this makes it possible to select a defferent baudrate to communicate with the arduino. Just choose the Baudrate set with Serial.begin(...) on the Arduino to get the right one. This does not work automatically.

The resolution sets the resolution of the screen. There are some standard ones, taken from some Arduino screens or shields (94x64, 128x64, 128x128, 320x240) and two other ones: fullscreen and Custom. The fullscreen is obvious, custom gets selected automatically when you resize the window to any size you want.

In other you can find settings that are possible with commands from the arduino, but i made them changeable here too, since that takes no arguments and communication, so it can be faster. It's better to use these settings, rather than sith your arduino.
You can set the font (only TrueType), the fillcolor, the pencolor and the backgroundcolor. Fontcolor is black and can't be changed.


1. Do only choose TrueType fonts. If you don't know what TrueType is, then just use the sommon ones like Calibri, Times new roman etc.
    If you use another font the program will throw an error.
2. Documentation should improve, but i'm working on this.


Current version 1.2:
- added command prompt, use it without arduino!
- index error bugfix

Version 1.1.1:
- possibility to set font, brush and penn in the PC program, so no serial communication is needed for this
- Improved auto-detect port select
- Stable enough for release!

Version 1.1.0:
- new commands such as setPen and setBrush
- multiple colors
- multiple fonts and fontstyles (bold, italic, normal)

Version 1.0.2:
- Automated COM port detection
- lay-out changed somewhat

Version 1.0.1:
- Baudrate settings added
- resolution settings added

Version 1.0.0:
- Start version 1.x because of new protocol
- A lot faster
- No endfunction when exiting drawing loop needed anymore
- Easier to use

Version 0.0.2:
- More stable
- Never released
- Same limits because of same protocol

Version 0.0.1:
- Not stable
- Never released
- Extreme limits due to complicated way of communication