Introduction: TypeOnAir ! (Long Exposure Typography Via Arduino)

About: I'm an electronics engineer who earns his life from software development. I love to waste my time on learning new tricks and helping people on NOT wasting their time :)

I believe there are two types of photographer. First group will enjoy freezing moment with all of its components. But the other half has to do something about it. Nature herself is not enough for satisfaction. Apparently i'm with the spoiled second half. Yes, long exposure photos are awesome by itself but why don't we add little bit of engineering to this beauty ?

With this technique called Light Painting, you can transform any long exposure photo to "Digital Painting".This technique is used from the beginning of the history of photography. Nowadays in any casual photo, shutter speed of the camera keeps open for 1/30th of a second to 1/8000th of a second. This duration decides the amount of the photons that hits to the sensors or analog film. Longer shutter stays open, bright parts of the photo becomes brighter. We are going to use shutter speed of ~5 seconds for this project .. like our ancestors .. but not for the same reason. As you can see I'm not good with instructions guys so let me start :)

PS: You may need some basic information about Arduino/CAD/Digital Photography that i forgot to talk about.

// Viewing all the steps before proceeding is highly recommended !

/*I may pass some lethal information . Please let me know if you struggle at any point. It is my first attempt of instructable !*/

What will you need ?

  • LED's ( 30 for my project ) I was lucky with my LED's that they all work fine. You may want to test them before proceed.
  • Plastic Lock Seal ( ~20 )
  • MDF or something to stick LED's
  • Lots and lots of cable ! ~ 3 mt of Ethernet cable ( 8 wire ) will do
  • Soldering equipment
  • Breadboard
  • Arduino ( Due is best option because of its 3.3 V operating voltage. If you use some other board, you will need extra resistors to limit LED current to max ~20 mA. It also has more then 30 digital I/O ports )
  • 9v Battery ( We are only going to supply Arduino Due. Pin Powers are enough for LED's.)

Step 1: Hardware, Part One;

What we need is construction for LEDs. I have used 3 mm MDF and cut ( with laser cutter but you can use any driller ) 5 mm wide holes in it. You can use anything you have. It doesn't need to hold any substantial weight on it. Bottom of standard (5 mm) LED is about 5.3 mm so 5 mm hole will hold LED secure but we need two piece of wood to stuck them.

You need to be careful while placing LEDs in holes. If you don't place cathodes(- (short leg)) in one side, connecting/soldering them will be much harder.

Step 2: Hardware, Part Two;

I'm assuming that you are familiar with LED's . Certain amount of current passes through diode, someone whispers "Let there be light" and tadaa ! What do you need to do make current flow ? Apply voltage. How ? With cables .. and power source . We are going to short circuit all the cathode pins and any pin with 3.3 V to its anode will shine !.

What happens if you apply voltage to wrong terminal ? Diode will burn ( in destructive manner ). That's why you should pay attention while placing LED's in right order. You are going to short circuit SHORT piece of metal that comes out of LED . One piece of naked cable will work just fine. Don't worry about any disturbance to this wire. Not your hand nor LED's will be harmed.

After soldering ground pins to one wire, you can proceed to wiring and soldering other LED's. Don't be stingy with the wire length. Better long than short. Using plastic lock seal after several LED's will make cables more stable. You don't want them to break in the middle of shooting.

Strip every single cable for about 1 cm and place them in Breadboard with right order. Then use jumper to connect them to Arduino. Don't forget to connect LED's ground to Arduino GND pin.

Now we are good to go ! Write simple Arduino sketch and test if your LEDs are all working ! If not, throw some lemons to Cave Johnson (It's Portal thing ..) .

Step 3: Software, Part One;

What do you want to write on air ? You will need it's photo .You can do next few steps in your mind but if you want precision you will need some software like Adobe Photoshop or Illustrator.

Step 1 : We need to give number for every led in array. I've used layers and text for that purpose. Every column is represented by number so that i can know which led to burn at certain time.

Step 2 : Divide rows. Each length of row will let you decide delays between commands . Third picture will compensate my insufficient English. You will understand why we do this in coding section.

Step 4: Software, Part Two,Three,Four..n-1,n.

int strip[30][2] = {}; // Why 30 ? Because i had 30 LED's. Why 2 ? On or Off

int exposure_time = 5000; // Exposure time in ms

int total_step = 129; // We divided our picture in vertical slices.

int x=50; // Delay per step in ms. You can select rows in photo, if you raise value of this variable those rows will widened.

String j = " "; // We are going to write LED numbers to this string. getValue() function will explode this string and burn() function will lighten up values passed from getValue() function. With this combination we will get rid of writing digitalWrite(HIGH and LOW) for every LED.

j = "1 2 3 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22";

burn(j);

delay(4*x);

Those are the lines that we are going to work with. We have numbered our LED's remember ? Now we are going to call them with "j" string and burn() them all ! Not all of them i mean .. All of the chosen ones ! burn() function will shut down LED's if it couldn't find its number.

You may need to give one last delay() after all of those codes in case of unintended repeat before you complete your project.

Hope you enjoyed it. I would love any feedback's for my further instructables !

Attachments

First Time Author Contest

Participated in the
First Time Author Contest