How to set up a Public Window using Arduino

Public Window

Public Window ( is an open source project which allows artists to display their creations in a window and have people from all around the world interact with it. This is a step-by-step guide on how to set up a Public Window of your own.

A Public Window consists of an artwork connected via an Arduino to a PC with a touchscreen. When someone walks by that window, he or she can than interact with the artwork by pressing buttons on the touchscreen. There are camera’s as well so that the art can be viewed and controlled from another Public Window.

Public Window

Step 1: Requirements

You will need the following things:

1. A window (or any other place to show your project).
2. A computer with Windows XP or later.
3. An internet connection.
4. An account on (get it here )
5. The Public Window software. Download here:
6. A touch screen (obtain one from here: (link naar de Public Window shop?))
7. An arduino.

Step 2: Connecting the hardware

For connecting the hardware we need to refer you to the manuals for your products.

Step 3: Installing the software

Installing the software

Now it’s time to install the Public Window software on your computer.

1. Make sure you have Microsoft .Net Framework 4 installed on your computer. If you are unsure about this, just download and install it from

2. Download the Public Window software from here:

3. Unzip the file you downloaded to any folder you like. (On Windows Vista / 7 you can right click the file and select ‘Extract All’, you can also download software for this like 7-Zip .

4. Open the file ‘owner.txt’ in the folder you just unzipped. Type your Public Window username in it and save the file.

5. Download and install the Arduino drivers. There is a great tutorial on how to do this on

Step 4: Creating a GUI

Your Public Window will need a graphical user interface (GUI) to show on the touchscreen so users can interact with the art. To do this we have a convenient tool which does not require any programming skills. This is a short guide on how to use it.

1. Go to .

2. Log in with the username and password you received from Public Window. If you dont have it, go to step X in this instructable.

3. You can add buttons, images and webcams with the links under ‘Add items’

4. Your added items will appear in the left window. You can click these items and then drag them to change their position on the screen.

5. You can resize the items by dragging the lower or right edge or the lowerright corner.

6. When you click on an item it’s properties will display on the right side. You can also click on the item in the list and it will appear as well. Here you can change font, colors, background images and assign actions. The action on a button is the text that will be send to the Arduino when the button is clicked.

7. When you are satisfied with your GUI you can enter a name for it in the top right corner of the screen and click on ‘Save GUI’.

Step 5: Creating an Arduino Sketch

You can now start on the creation of the Arduino code that will control your artwork. Learning how to program on the Arduino can be done using the tutorials  and examples on the Arduino website.

One important thing is that there has to be a serial connection that will allow the software on the PC to send action commands to the Arduino via the USB cable. That is why we will provide a script with the basics in it. It will listen to the serial port and will turn a LED on when it receives a ‘1’, and it will turn it off when it receives a ‘2’.

// modified from SerialCallResponseASCII example

int inByte = 0; // incoming serial byte

void setup()
Serial.begin(9600); // start serial port at 9600 bps:
pinMode(13, OUTPUT); // digital sensor is on digital pin 2

void loop()
// check if there are any bytes ready to be read
if (Serial.available() > 0) {

// get incoming byte:
inByte =;

// check if the received byte is the trigger value for LED on
if(inByte == ‘1’){
// turn the LED on
digitalWrite(13, HIGH);

// check if the received byte is the trigger value for LED on
if(inByte == ‘2’){
// turn the LED off
digitalWrite(13, LOW);

// wait a few ms

Read more: How to set up a Public Window

Leave a Comment

Your email address will not be published. Required fields are marked *