Find all your DIY electronics in the MakerShed. 3D Printing, Kits, Arduino, Raspberry Pi, Books & more!

Make: Projects

A Touchless 3D Tracking Interface

Create a 3D computer interface using little more than an Arduino, six resistors, and some aluminum foil!

A Touchless 3D Tracking Interface

In this project, we’ll take a very simple idea — the length of time it takes a capacitor to charge — and make something rather amazing with it: a 3D interface that can track the position of your hand. The original implementation of this project comes from media artist Kyle McDonald.

Steps

Step #1: Making the sensor cube.

PrevNext
A Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking Interface
  • For this project we'll need some cardboard squares (mine are approximately 12" square, but anything from about 8-12" is fine), alligator clips, an Arduino, shielded wire, aluminum foil, spray glue, and some wide tape. (3) 10KΩ and (3) 220KΩ resistors are also required (not shown).
  • Additionally, we'll need a soldering iron to connect the resistors to the cable.
  • Spray the glue onto the cardboard and smooth the foil onto one side. Work slowly and try to leave a small gap around the edge of the foil. It is important that the foil plates do not touch each other when we tape the three sides together. In a pinch you can use a glue stick.
  • I cut a small notch in the inside edge of the rightmost plate to make it easier to connect the alligator clips later on (see second photo).
  • Using tape, assemble the plates to form one half of a cube (see the third photo).

Step #2: Prepare the wires.

PrevNext
A Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking Interface
  • Next we need to prepare the wiring. I bought a 6' shielded audio cable for this. It is important to use shielded wire so that the cable itself doesn't act as an antenna and skew the sensor readings.
  • Cut the wire into 3 pieces of equal length (2' or so) and strip off the outer and inner insulation (second photo).
  • On one end, trim off the shielding wire and connect just the inner signal wire to an alligator clip (third photo).

Step #3: Adding the resistors.

PrevNext
A Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking Interface
  • On the other non-alligator end of the cables, twist together the 3 shield wires and solder them. The shield will be connected to the 5V pin on the Arduino. This will minimize the antenna effect of the cable on the circuit.
  • Referring to the schematic, connect the resistors to the three inner wires of the cables as shown and connect this to the ends of the three wires. The 220KΩ resistors all connect between the inner wire of the cable and 5V. The 10KΩ resistors will each be connected between the end of the cable and a pin on the Arduino. The circled area indicates that this wire should be shielded, with the shield connected to +5V.
  • Use a small piece of jumper wire to make the connection between the shield wires and the 5V output pin on the Arduino, as shown in the third photo.
  • In the picture, I have used some blue heat shrink tubing to hold the three wires together. You could also just tape the wires together.

Step #4: Connecting the Arduino.

PrevNext
A Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking Interface
  • Connect each of the 10KΩ resistors to pins 8,9, and 10 respectively. Connect the red wire to the +5V pin on the Arduino.
  • Attach each of the alligator clips to a foil plate. The clips should be attached in the following order: pin 8=left plate (x), pin 9=bottom plate (y), pin 10=right plate (z). Make sure that each clip is making good electrical contact with the foil and is only touching one plate.
  • When troubleshooting, check the connection between the plate and the pin with a multimeter to make sure the alligator clip is making a good electrical contact.

Step #5: Using the software.

PrevNext
A Touchless 3D Tracking InterfaceA Touchless 3D Tracking InterfaceA Touchless 3D Tracking Interface
  • Download the Arduino sketch and Processing sketch from GitHub. If you haven't previously installed Processing, get it here.
  • From the Arduino IDE, upload the sketch to the Arduino. Keep the USB cable connected to the Arduino, then install and load the Processing sketch.
  • It is important that your computer is plugged into the wall for this to work properly. If the circuit isn't connected to earth ground (at least indirectly though your computer) you may find that your computer itself will affect the circuit.
  • The next thing to be done is calibrate the software. With the Processing sketch running, hold down the left mouse button. Then move your hand from the far outer diagonal corner (i.e., the invisible corner of the cube closest to you) to the inner corner. Don't touch the foil, just move your hand through the space defined by the cube. Now release the mouse button. The path your hand traveled gives the software a chance to detect the range of motion your hand will make inside the cube.
  • Now move your hand around inside of the cube. There should be a sphere on the screen through which you can control and move to touch all 27 cubes inside the computer model. Pressing tab will change the color of the cubes.
  • This is the simplest form of capacitive sensing available. In the final section, we'll look at some alternative solutions and options to improve the system.

Step #6: Possible improvements.

PrevNext
A Touchless 3D Tracking Interface
  • Increasing the resistor values - the 220KΩ resistors form part of the RC network and it's worth experimenting with different values. Typical values are 200KΩ to 500KΩ. The responsiveness of the system will be affected by these values. You can also tweak the values in the "Normalize" tab of the Processing sketch to calibrate your particular configuration.
  • A more solid connection with ground. Since the Arduino is connected to the computer, and the computer is connected to the wall socket ground, this is generally good enough to provide a consistent reference to ground. If you have a house ground connection available you might want to connect this to the Arduino ground pin and see if that improves the response.
  • If you decide to connect anything to the house wiring, be very sure that it really is a ground. A good earth ground would be a water pipe.
  • The CapSense library is an excellent capactive sensing library for Arduino. The page includes some good information on configuring capacitive sensing circuits.
  • Terry Fritz (a well regarded Tesla Coil experimenter) put together a neat "vision" system for robotics called ThereminVision. It uses tuned oscillators and heterodyning to implement a theremin circuit. Definitely worth a look.

Conclusion

In this guide, we introduced the concept of capacitive sensing. Nearly all sensing of this kind depends upon how long it takes a capacitor to charge (known as the time constant). Placing an object within the electric field of a capacitor will affect the capacitance value and the corresponding time constant. See the RC time constant entry on Wikipedia for more information.

We hope you appreciate the cleverness of this project as much as we did and how relatively easy it is to get a very 21st century interface (however crude) out of some aluminum foil and a cardboard box! We'd love to hear of your experiences with the build (in the comment section below).

Steve Hobley

This week, I have been mostly working on...

I've been tinkering around with bits of technology since I was five years old. I used to take the telephone apart at home, just to see how it worked.

After a couple of years I could even put it back together again - and sometimes it would continue to work.


Comments

  1. Michael says:

    You have to have all 3 files in a folder called “TicTacToe3D”. Bring up TicTacToe3D in processing and run it. It should behave as described in the instructions.

    The easiest way to download all of the files from GitHub is to click the “Downloads” link (upper right corner, about 3rd line from the top) then the “Download as Zip” button. That way you get all of the files in the right structure to load into the tools.

    1. Chris says:

      when i open the processing tic tac toe, it has the three other files tabbed but when i run it it shows a blank cube. Why is that?

      1. onders says:

        I as well am having the same problem. Could someone please offer assistance. Thanks in advance

        1. emarinkovic says:

          I found that changing the value of the comport in the following snippet of code from TicTacToe3D seemed to help bring up the image of the cube

          “import processing.serial.*;
          import processing.opengl.*;

          Serial serial;
          int serialPort = 0; // << Set this to be the serial port of your Arduino – ie if you have 3 ports : COM1, COM2, COM3
          // and your Arduino is on COM2 you should set this to '1' – since the array is 0 based

          I am still struggling to get it to work properly though. Hope this helps

      2. Brandon says:

        Hey you should run 1.5.1 i had the same problem and i was really upset but when i switched from 2.0.1 to 1.5.1 it worked. Hoped this helped if it didn’t i have a few other ideas.

    2. Shane says:

      I have the processing and everything done that is needed, but I dont understand how to get the processing to work and show me the cubes. I could not find the download button you talked about and I am lost at the moment.

  2. Brian says:

    and where is processing? sorry for the total noobage im just getting started! and thanks ill change the values!

  3. Steve Hobley says:

    You don’t need to use the analog ports as this is measuring the time taken to charge to “full” (HIGH) rather than measuring individual levels.

    Processing is available from http://processing.org

  4. quang nguyen says:

    I have the same error…

  5. Michael says:

    Download processing processing.org, if you have not found it already (step 5 first bullet above)

  6. Steve Hobley says:

    Although I don’t have the code with me right now I suspect it’s because the serial port you are using to connect to your Arduino is set incorrectly. IIRC there is an array that needs to point to the correct serial port. I think I made a comment in the code about it.

  7. fe13ar says:

    This is great!
    Would this also work on another mc like AT89c51?
    If yes, will major changes be required in the code?

  8. mohamed says:

    i have the same do you found a solution ?

  9. Shawn Wallace says:

    Hi Sean:
    Take a look at the Arduino Leonardo; that will let you use this as a (very crude) mouse.

    1. Nehad says:

      Hi
      I opened the processing and appeared to me an empty box… is that normal

  10. Shawn Wallace says:

    Hi Mohamed:
    What error are you getting, exactly? Can you post the output here?

  11. Shawn Wallace says:

    Rebooting is odd, but could be an indication of a short circuit that is pulling too much current from your USB port. Your Mac should be able to shut the USB port down in a case of a current overload, but maybe not in this case. I would try to troubleshoot by narrowing it down to getting a single plate working. Make sure your power to the Arduino is connected to the wall; they powering it from a separate wall wart first.

  12. Shawn Wallace says:

    Either one is fine. The their behind the DIL version is that students who keep trying to drive motors directly from an Arduino pin can easily replace the chip when it fries (at least, when the pin fries). So, I guess the DIL version is more robust in that sense.

  13. Andraz says:

    Thanks.
    (Sorry for late reply, I didn’t found the “reply” button :-)

  14. Kyle Luiten says:

    im having the same problem!!! do i need a driver for the arduino or something?

  15. Kyle Roberts says:

    The name Kyle must be cursed o_O

  16. Clark Dalton says:

    In the same boat as Alfred. Anyone got any ideas?

  17. Shawn Wallace says:

    I think there may be a problem with the code and Processing 2.0. Can you try it with Processing 1.5?

  18. Shiva Nathan says:

    I solved the previous problem. Make sure that you’re using the most STABLE interface of Processing:
    1.5.1.
    DO NOT use version 2.0.3.

  19. Shiva Nathan says:

    @ Kyle Roberts:
    Go to Terminal and type in the commands:
    sudo mkdir…sudo chmod

    This is for Mac, by the way.

  20. Kyle Roberts says:

    I just fixed the problem… Try using a 32bit pc for it… i was using mac

  21. Steve Hobley says:

    It still sounds like you have some issues with the Processing installation. Have you tried running some other sketches? Do they run OK?

  22. omar ahmed says:

    ya the processing runs fine but the TicTacToe3D sketch says theirs an error cannot find class normalize the processing program runs fine im pretty sure its in the code

  23. omar ahmed says:

    OK two of the sketches have error Normalize and TicTacToe3D on normalize it says- (nested type normalize cannot hide an enclosing type) and TicTacToe3D says- (cannot find classs or type “Normalize”)

  24. felix says:

    did you ever fix this? i get similiar errors…

    Display 0 does not exist, using the default display instead.
    WARNING: RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
    [0] “/dev/tty.usbmodem3a21″
    [1] “/dev/cu.usbmodem3a21″
    [2] “/dev/tty.Bluetooth-PDA-Sync”
    [3] “/dev/cu.Bluetooth-PDA-Sync”
    [4] “/dev/tty.Bluetooth-Modem”
    [5] “/dev/cu.Bluetooth-Modem”

    and nothing happens on calibration (the ball drops into the centre but thats it)

  25. felix says:

    Nice!,,, i cant get this working with processing but i really want to tweak the arduino code to feed into Max MSP as a musical interface kind of thing, any tips or code you can send my way just to get some useful reading from each axis???

  26. omar ahmed says:

    oh what you do is make sure you have all the codes: TicTacToe3D, Normalize, MoumentumAverage. all i one window

  27. Roy says:

    Would love to see that code if you can post it!

  28. zephyrin JG says:

    how could i do that?

  29. Pritesh says:

    Today, I am trying with processing v1.5.1 but, it still shows,
    Display 0 does not exist, using the default display instead.
    WARNING: RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
    And executes showing the boxes, but, doesn’t calibrates, shows just yellow ball at the top last corner and doesn’t shows any movement..
    I am using ATmega328 (duemilanove), will it supports?
    helpme..

  30. Yash Kudale says:

    ya i am having the same problem did you find any solution ?

  31. Yash Kudale says:

    dude just use older version of the software 1.5.1 (with java) and it worked

    1. Pritesh says:

      @Yash Kudale
      Thanks for reply!
      But, still I got the same error!

  32. Austin says:

    Use Processing version 1.5.1 instead of the latest version. I can get the other cubes to show up when I do this. I’m having trouble calibrating though.

  33. Jim says:

    Got this working but also having trouble calibrating — getting very limited range of movement on the display. Any tips on that?

  34. jake says:

    I get this in 64bit pc with processing 1.51 and arduino 1.5.2

    Display 0 does not exist, using the default display instead.
    WARNING: RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
    [0] “COM3″
    Exception in thread “Animation Thread” java.lang.ArrayIndexOutOfBoundsException: 2
    at TicTacToe3D.setup(TicTacToe3D.java:57)
    at processing.core.PApplet.handleDraw(Unknown Source)
    at processing.core.PApplet.run(Unknown Source)
    at java.lang.Thread.run(Thread.java:662)

  35. jake says:

    also what do i fill in here:
    int sen = 3; // sensors
    int div = 3; // board sub divisions

  36. Nehad says:

    I have an arduino processing 1.5.1. Do I have to download the processing that is on ‘www.processing.org’??

  37. Nehad says:

    The processing is not working on 64 bit . Is there an updated version??

  38. Charles says:

    Which of the sketches do we add to the arduino breadboard. 3DInterface or TicTacToe3D

  39. timmy says:

    where is the code and the progeam

  40. Kartik Desai says:

    I am not able to download code… :(
    How to do it???

  41. MatteoITA says:

    I’m really impressioned and I would like to adapt the software to a pic, where can i find the source code? Thank you ;)

  42. Jason says:

    Can someone help me out on step #5, point 2: “From the Arduino IDE, upload the sketch to the Arduino. Keep the USB cable connected to the Arduino, then install and load the Processing sketch.” I was able to upload the sketch to the Arduino, but I don’t get the “install and load the Processing sketch” part. (I do have Processing) I have been stuck on this part for a while now. Help will be greatly appreciated.

    1. Kelly says:

      Just wondering if you ever figured it out? I have the cube up but cannot get it to move. I suspect it is because I have done a step wrong.

  43. miladen says:

    Hey guys, great tutorial. I can’t seem to find the Arduino Sketch though? The link is not working here, as in it is not even active…?

  44. Angie Li says:

    I am having the issue with normalize as well when I use this code: https://raw.github.com/Make-Magazine/3DInterface/master/TicTacToe3D/TicTacToe3D.pde How many different files of code do I need to copy into the Processing?

    Note: I am using Processing 1.5.1

  45. Paul says:

    I’m using Processing 1.5.1 and my Arduino is connected via COM3, but I’m getting the following error when running the TicTacToe3D program ArrayIndexOutOfBoundsException: 1. The Processing run screen appears, but it remains white. Any help would be appreciated, thanks.

    1. Nicko says:

      I have the same issue. Did you find a solution?

  46. Min says:

    Hi, I have done everything and I see TicTacToe3D screen with boxes and orange ball. but the problem is that the ball doesn’t move at all. It doesn’t react. Any advice? What could be a problem? Help me~

    1. Robin says:

      I’ve got similar problem. The only difference is, the ball’s movin ariound in random directions

    2. Kelly says:

      I am having the same problem. Did you figure out what was causing it? Thanks!!

      1. Demece says:

        You can download the arduino sketch and the 3 processing
        Version 1.5 sketches off github. Search under
        3D Interface. You alsp need a mouse to calibrate
        the software, we have not been successful with
        a trackpad. Hope this helps!

  47. Newermore says:

    Can anyone please write me what program this does step by step, i realy need this for my school project. Please e-mail me to kasanickyfilip@gmail.com . I will be very gratefull.

    #define resolution 8
    #define mains 50 // 60: north america, japan; 50: most other places

    #define refresh 2 * 1000000 / mains

    void setup() {
    Serial.begin(115200);

    // unused pins are fairly insignificant,
    // but pulled low to reduce unknown variables
    for(int i = 2; i < 14; i++) {
    pinMode(i, OUTPUT);
    digitalWrite(i, LOW);
    }

    for(int i = 8; i < 11; i++)
    pinMode(i, INPUT);

    startTimer();
    }

    void loop() {
    Serial.print(time(8, B00000001), DEC);
    Serial.print(" ");
    Serial.print(time(9, B00000010), DEC);
    Serial.print(" ");
    Serial.println(time(10, B00000100), DEC);

    }

    long time(int pin, byte mask) {
    unsigned long count = 0, total = 0;
    while(checkTimer() < refresh) {
    // pinMode is about 6 times slower than assigning
    // DDRB directly, but that pause is important
    pinMode(pin, OUTPUT);
    PORTB = 0;
    pinMode(pin, INPUT);
    while((PINB & mask) == 0)
    count++;
    total++;
    }
    startTimer();
    return (count << resolution) / total;
    }

    extern volatile unsigned long timer0_overflow_count;

    void startTimer() {
    timer0_overflow_count = 0;
    TCNT0 = 0;
    }

    unsigned long checkTimer() {
    return ((timer0_overflow_count << 8) + TCNT0) << 2;
    }

    1. Ahmed Zacky says:

      Hi, did you get ur reply? If so, can you please forward it to me at darkanjel98@gmail.com please. Even I have a school project to submit tomorrow

  48. Andrew says:

    Can someone send me all Arduino and Processing files ? I can’t download them,
    Here is my email: andrey_europe_95hd@yahoo.com
    I’ll be very grateful.

  49. Nehad says:

    Hey!!
    I did everything, but the box is not moving. what’s the problem??
    Can anyone help me please??
    I made 220K ohm by two 100k series with two 10k … do you think this is the problem?

  50. Nehad says:

    It worked thanks god.
    but the sensitivity is poor, it is not sensing my hands well.
    is there any suggestions????????

  51. Abd El-Rahman says:

    please I want the link of the arduino sketch

    1. Nacho says:

      have you got it? the arduino sketch?

  52. Nacho says:

    I cant download the sketch for my arduino board, pls someone help me.

    1. Nacho says:

      thx a lot, i really appreciate it

      1. Nehad says:

        You Welcome :)

  53. Jazmin says:

    im trying to do this with labview using an Ni daq, i really hope it works, I`ll do all the programing instead of downloading it since i wont be using the arduino But before I start, is the Al foil sensitive enough?? cause if it isnt, itll be hard to see the variations first off.
    Thx

  54. Moises Mejia says:

    i cant seem to be able to open he sketch, im using a mac book pro. can someone help me out

  55. Rohtih says:

    i got 3d cubes in processing..but it is STATIC not moving.. can some pls held to trubleshoot this problem….

    1. Nehad says:

      1-check the arduino ports with the arduino program, they must be the same.
      2-And change number of bits per second: control panel-> Device Manager->ports->double click on arduino-> port settings-> Bits per second=115200

  56. Joshua All says:

    Hello everyone, I was curious about the possibility of increasing the size of the squares to 7 feet by 7 feet, and how would that work with this idea? Any help would be appreciated. Concurrently, what inside the hand is charging the compositors of the squares, and what else could be used besides a hand?

  57. Somesh says:

    Pls can some one explain me the exact procedure….. I am unable to understand most of the part in here….. is the code given above ….the 3D tic tac toe correct???
    If not pls upload the one that runs correctly ASAP please

    1. Brandon says:

      no the code is wrong when you run it the program says cant find sensors change the words sensors to sen hope this helps.

  58. Damodharan says:

    Pls help me.
    How can i move mouse in windows using this project ?

  59. George says:

    It says in Processing that sensors cannot be resolved to a variable what should I do??

  60. Casey says:

    The links to download the program aren’t working for me. Could anyone tell me the url to the download page?

  61. rashomon says:

    Hello everybody
    I’m using processing 2.0 and it seems is not working well?
    Do I need to use processing 1.5.1 with java 6?
    thxs

    1. George says:

      You need to use processing 1.5.1 processing 2 has errors.

  62. Ahmed Zacky says:

    Using a MEGA 2560 – as a 3d controller?
    Hi, I dont have a leodardo but successfully (or maybe not?) finished all my budget on this. But alas! I really want to know whether i can use this as a (maybe crude) interface for a 3d game made in unity, or better, a 3d controller for 3d programs like maya or 3dmax (or blender/cinema4d) I Would really like to know as soon as possible because i have to submit a project on thrusday and im clueless. Thank you. Any help would be appreciated!!

  63. George says:

    My screen in processing keeps freezing on the center corner help!!!!

    1. George says:

      I’m talking about the invisible corner.

      1. George says:

        Also what type of jumper wire do you need? Mine is acting like a sensor instead of a wire.
        Any suggestions?

        1. Ahmed Zacky says:

          Coaxial cable.. the one which you put to backyard antennas? (skew out the aluminium covering inside.)
          While calibrating, do not touch the ICSP, it will cause it to get stuck there :D

          1. George says:

            Thanks

  64. cwelsh says:

    does this project actually work, because some of the comments say otherwise.

    1. Nehad says:

      Yes it works

  65. Frank says:

    Hello everyone, I need help where can I download the sketch and I don´t know if its necessary any library from arduino, thanks

  66. zalino says:

    please i’m cameroonian ,how to get arduino module for make it ?it is possible to facilitate me to get it?my Email:ttab303@gmail.com

  67. Demece says:

    Please link github files for Arduino and Processing tic tac toe 3D. Cannot find files in github. Have already made repo. Thanks…

  68. Kelly says:

    Got it to work, what a cool project. I am going to use it in my middle school classroom as a fun way to talk about 2D vs 3D and coordinates. THANKS!!

  69. Robert14 says:

    Does it work on 64 bits?

  70. valismaili says:

    I get the error I’ve posted below on Processing 1.5.1 when I run the sketch. It opens the window with the cubes and stuff. I hold down the button on the mouse and it comes up saying defining boundaries which is good. But after I’ve done that part I can’t get the sphere to move, would appreciate any help :) Thanks

    WARNING: RXTX Version mismatch
    Jar version = RXTX-2.2pre1
    native lib Version = RXTX-2.2pre2
    [0] “/dev/tty.Bluetooth-PDA-Sync”
    [1] “/dev/cu.Bluetooth-PDA-Sync”
    [2] “/dev/tty.Bluetooth-Modem”
    [3] “/dev/cu.Bluetooth-Modem”
    [4] “/dev/tty.usbmodemfa1311″
    [5] “/dev/cu.usbmodemfa1311″

  71. razvan says:

    Just built this and it isn’t working. Could someone email me the sketch i need to use or some advice, please? razvan.stoian@gmail.com

  72. jeffekind says:

    Where can i find the download???? plz help me!

      1. jeffekind says:

        Hey thnx man!

  73. Demece says:

    Please input link for the right Arduino and Processing (1.5.1) sketches – Github does not have the right ones for Mac. Please???

  74. Brian De Guire says:

    When i hit go on the processing it says that it cant find a class or type named “Normalize” if anyone could tell me what to do that would be great.

    1. Newermore says:

      Have you installed drivers for arduino ? Because this seems as no program is in it.

      1. Brian De Guire says:

        I tried to do so but it wouldn’t let me. I have a macbook and it says that the driver is from the internet and that it won’t open it unless it is from the app store. any suggestions?

        1. Newermore says:

          I have finished this project on windows 7 so im afraid that i cant help you with this. But i have found this video http://youtu.be/Xr_bGDuyGEE guide that might help you.

          1. Brian De Guire says:

            thx for your help.

  75. Where are the links for the sketches? I see what looks like should be Links in step 5 but they are not click enabled. Is there another way I can receive them?

  76. Sketches are at: https://github.com/Make-Magazine/3DInterface

    I’ve got this built. I have the right serial port selected in the TicTacToe3D sketch, I changed the mains constant in the arduino sketch to 60. In an attempt to ensure proper ground, I have a DC adapter plugged into the board.

    I’ve checked resistance through the whole system with a multimeter to ensure I don’t have a bad connection, including touching the foil.

    The only output I get from reading the serial port is always 0 0 0. Maybe I don’t have the right port? Seems strange. It is the 1.5.1 version of processing. The Arduino board is working according to the blinking_LED sketch. I’ve even loaded the empty setup and loop sketch to ensure things are cleared out, and then put the 3d interface back in.

    I’ve also ensured my com port (COM5) is set to 115200 speed.

    1. I’ve discovered my screw up. I used 220 resistors, not 220K.

      1. LOL I did the same thing XD

  77. daniel says:

    are you running the processing app in android or java mode?

  78. Kevin says:

    How can i know in which position my hand is, to transmit that position to an transmiter RF?
    For example: for each position of the hand it makes a different action like turning on a led in 3x3x3 cube full of leds.

  79. What’s your opinion on making this project life size, and making the box 5 feet by 5 feet by 5 feet. Would it be posssible?

  80. Daniel says:

    for some reason every time i try to run the sketch on my mac it just stays in one position but when i run it from windows it runs perfectly, any idea why?

  81. juan says:

    Hi, when I try to run the processing sketch I get this message: “The function readStringUntil(char) does not exist”. that function is in the next line of code “String cur = serial.readStringUntil(‘\n’);”. I asume that such function should be in the serial library but i don´t know what the problem is. I need your help plis.

    1. chos says:

      You need to use processing 1.5
      that command has change in the latest edition

  82. […] today for our ninth installment of Weekend Projects Hangouts On Air. We’ll be discussing the Touchless 3D Tracking Interface, which turns some everyday household materials like cardboard and aluminum foil into capacitor […]

  83. rami says:

    Hi all,
    I’m testing this with just one panel and using the test program (_3DInterface)
    if I’m shorting pin 8+9+10 it’s working but reports three outputs,I would like just one output and that pins 9 and 10 (on the arduino) will be disconnected.
    tried changing line for(inti=8;i<11;i++) pinmode(i,input), to for(inti=8;i<9;i++) pinmode(i,input)
    but it didn't work, each time i remove the short line between pins 8+9+10 the output stops.

    Please advise
    rami

  84. […] Interface. Look for it immediately following today’s field trip, see the project here: http://makezine.com/projects/a-touchless-3d-tracking-interface/ – and have a great weekend everyone! […]