Vous êtes sur la page 1sur 12

MAKE: PROJECTS

A Touchless 3D TrackingInterface
Create a 3D computer interface using little more than an Arduino, six resistors, and some
aluminum foil!
By Steve Hobley Time Required: 2 hours Difculty: Moderate

Page Saved
Add Tags

Weekend Projects - A Touchless 3D Tracking Interface

877

269

In61this project, well 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
7 hand. The original implementation of this project comes from media artist Kyle
your

McDonald.
7

PARTS

Aluminum foil (1)


Masking tape (1)
Page Saved

Computer with Processing and


Add Tags
Arduino software installed (1)
Shielded cable, cut off the ends,
cut into (3) 2' lengths (1) from
RadioShack.
Arduino (1) from RadioShack.
10K resistors (3) from
RadioShack.
220K resistors (3) from
RadioShack.
Alligator clips (3) from
RadioShack.
pieces of cardboard (3)

STEPS
PROJECT STEPS
1. Making the sensor cube.
877

2. Prepare the wires.


3. 269
Adding the resistors.
4. Connecting
the Arduino.
61
5. Using
the software.
7
6. Possible improvements.
7

ADVERTISEMENT

Page Saved
Add Tags

Step #1: Making the sensor cube.

877

269

61

Page Saved
Add Tags

For this project we'll need some cardboard squares (mine are approximately 12" square, but anything from
about 8-12" is ne), 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).

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 eld 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 877
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
269
below).
61

Page Saved
877

269

61

Add Tags

STEVE HOBLEY
This week, I have been mostly working on...
I've been tinkering around with bits of technology since I was ve 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.

Steve's Blog

44Comments
Recommend 2

MAKE

Share

Login

SortbyBest

Jointhediscussion
Guest 2yearsago

HiIhavebeenworkingonacodethatitookfromtheinternetandIhavebeengettingthissameerror"
ArrayOutOfBoundsException"nomatterwhatCOMportIchangeto.PleasehelpmeIhavebeenstuckof
thisproblemforweeks.Anyone?

//

importprocessing.serial.*
importprocessing.opengl.*
Serialserial
intserialPort=1//<<SetthistobetheserialportofyourArduinoieifyouhave3ports:COM1,COM2,
COM3
//andyourArduinoisonCOM2youshouldsetthisto'1'sincethearrayis0based
877

269

61

intsen=3//sensors
intdiv=3//boardsubdivisions
Normalizen[]=newNormalize[sen]
MomentumAveragecama[]=newMomentumAverage[sen]
MomentumAverageaxyz[]=newMomentumAverage[sen]
seemore

13

Reply Share

GarrettDavidson>Guest 2yearsago
7

Ihadthesameproblematfirst.IrealizedthateventhoughmyportwaslistedasCOM3,Ionlyhad
oneportsetuponmycomputer.Thus,IchangedtheserialPortto0andeverythingworkedfine.
Hopethishelpssomebody.
5

Reply Share

Zoom 2yearsago

Heywherecanidownloadthecode?
11

Page Saved

Reply Share

Add Tags

FaridLopez 2yearsago

Hello,IamrunningMacBookPro(2013)OSXMountainLion.IpullupthesketchesforNormalizeand
MomentumAveragejustfinebuttheTicTacToe3Dwillnotrun.Processingreturnsanerrormessage"Can
notfindclassortypeNormalize"(italsohighlightsthelinewhereacalltotheNormalizesketchis.I
commentoutthislineandthecallstotheothersketchesreturnthesameerrormessage,anyideaswhy?
4

Reply Share

OscarEspinosa 2yearsago

Hi,Iminterestingintheproyectthatyoudid,Iwanttotryit,butIdon'tknowtheorderoftheProcessing
programs,ifyoucanhelpmeIwillappreciate:)
OscarEspinosa
2

Reply Share

RyanWestcott>OscarEspinosa 2yearsago

HelloOscar,allthatyouneedtodoisputthethreedifferentprogramsinthreedifferentprocessing
tabs,andrunthe3dtictactoeprogramandtheyshouldwork.
Goodluck.

Reply Share

MinhQuc 2yearsago

HiItlooksveryinteresting,Iwouldtobuildmyownprogramlikethis,Iwanttoknowhowyoureadthe

HiItlooksveryinteresting,Iwouldtobuildmyownprogramlikethis,Iwanttoknowhowyoureadthe
signaldata,didyouuseADCpin?Andhowtodeterminethepositionin3D?
Hopeyouhelpmeanswertheseabovequestion.
MinhQuoc
1

Reply Share

MinhQuc>MinhQuc 2yearsago

Youuselikethecapturefeatureandmeasurethetimetogettherisingedgeorfallingedgesignalto
determinetheposition,isthisright?

Reply Share

877

JahaalMordeth>MinhQuc ayearago

Checkoutthecode.Essentiallyhedoesthefollowing(notexactlybuthere'sthegist):

269

pinMode(pin,OUTPUT)
digitalWrite(pin,0)
delay(1000)
pinMode(pin,INPUT)
unsignedlonginit=micros()
while(digitalRead(pin)==0){}
unsignedlongend=micros()
Serial.print(endinit)

61

Putthatcodeintoyourvoidstart(){}method.Makesureyouconnectthewiresproperlyand
chooseavaluefor"pin"(you'reusingtheGPIOpins.8,9,and10aregoodbets).Connect
acapacitortothepieceoftheschematicthatissupposedtogototheplate.Connectthe
groundleadtothegroundpinonyourArduino.Theserialmonitorshouldthendisplayhow
longittookforthiscapacitortocharge.He'sessentiallydoingthisrepeatedly.
Page Saved

Reply Share

Add Tags
arjun 2monthsago

whereisthecodesforthisproject

Reply Share

Harshit 2monthsago

Thecodeforprpcessingsketchgiveninthelinkaboveisshowingerrors.Myoperatingsystemiswindows
10.cananybodyfixthisformeplease

Reply Share

AbelRamos 5monthsago

Canyoudowiththetights?

Reply Share

AGAMTYAGI 5monthsago

heyiamworkingonthisproject...willsomeonegivemecodefor3Dtictactoeplzz

Reply Share

GaneshHosur 7monthsago

GaneshHosur 7monthsago

idontgetanyresultswhenimovemyhandintothex,y,zaxesboards.Butwhenitakemyhandcloserto
thearduinoboardthetheserialmonitorshowsupsomereadingsandthecubemovesonlytillitreaches
thecenter.

Reply Share

8monthsago

Whatwrongewiththispleasehelpme

877

269

61

Reply Share

alokb 8monthsago

whichistheshieldwire&signalwiresinshieldedwire??alsoicutoutanoldlaptopchargerwirewillit
work?icanseeared&awhitewire,whichdoiuseassignalwire&shieldwire?

Reply Share

Sl 9monthsago

Page Saved
Add Tags

Iamgettingerrorintheprocessingsoftwarekeepsshowingmethis.
Error:"typestring[]ofthelastargumenttomethodprintln(object....)doesn'texactlymatchthevararg
parametertype.casttoobject[]toconfirmthenonvarargsinvocation,orpassindividualargumentsoftype
objectforavarargsinvocation.'
Iamjustnewtoprocessingsoftware.So,idontknowmuchaboutit.
Canplzanyonehelp??

Reply Share

AakashJaiswal>Sl 2monthsago

Iamalsogettingthesameerror.
Couldyoupleasetellmehowtoremovethiserror.

Reply Share

Sl>AakashJaiswal 2monthsago

Thecodeiscompletelyperfect.Theproblemiswiththecomportsofthepc/laptop.
Asforallpc/laptoporduetodifferentbrands.Soujusthavetojustknowwhichcomwork
foru.
ConnecturarduinotourpcorlaptopthengotoTicTacToe3D.pde.
Inthatgoto4thlinethatis"intserialPort=1"changethat1toanyvaluefrom0to4.
Formecom0worked.Hopethiswillhelp.

Reply Share

AakashJaiswal>Sl 2monthsago

Thanksforthehelp.Mycodeisnowworkingfine.Ichangedthevalueto0andused
Processing2.2.1insteadofProcessing3.0b3.

Reply Share

Sl>AakashJaiswal 2monthsago

Urwelcome.

Reply Share

877

imherenowwhatnow 10monthsago
269

61

cansomeonetellmewhatrolldoestheshieldwiresplaysinthis?seemunnecessaryasitisnotbeing
connectedfromoneend

Reply Share

Alex 10monthsago
7

Hi!
Congratulations!Isagreatproject!
Ihaveaquestionaboutit:
Iwouldliketouseittotrackmyhandinlabview.ThesoftwaregivestheX,Y,Zvaluesoftheposition?

Reply Share

Malvino ayearago

hiihavebeenworkingonthisexperiment.itisawesome.buticantruntheprocessingtictactoe3d.iam
Page Saved
gettingthiserror.cananyonehelpme,please?
Add Tags

Reply Share

SchauneHannibal ayearago

Hi,agroupofusaretryingtobuildthetouchless3Dtrackinginterface.Itsaverycoolprojectthatweare
tryingtogetdoneforaschoolproject.Weranintotheproblemwherewewereonlygettingawhitescreen
fortheprocesspartbutwegotthatresolved.Nowitshowingtheimageofthetictactoewiththesquares
andtheballbuttheballisstuckatthebackcornerwhenweruntheprocessprogramtryingtocalibrateit.
WesawthatsomeotherpeoplehavehadthisproblembutIhaven'tseenanyposthowtheyhavegotthis
resolved.Cansomepleaseinformmeastowhatwecandotosolvethisplease.

Reply Share

AdamWhite>SchauneHannibal ayearago

didyoueverfindasolution?Iamhavingthesameproblem.

Reply Share

Sumit>AdamWhite ayearago

samehere...
didugetanyfix???

Reply Share

Reply Share

MihaiGna ayearago

Thisisacompletebullhist,youcannotmeasurethecharge/dischargetimeaslongasthe5Vpinisalways
on(anditis)

Reply Share

SrenAndreasen>MihaiGna 8monthsago

IhadzeroreactionatalluntilIremovedthe5vconnectionontheshields...what'supwiththat?

Reply Share

877

ramakrishna ayearago
269

plzhelpmesolvethejava.runtime.exeption....whichihavefacedwhilerunningtheprocessingsketchof
3dinterface.......

61

Reply Share

Malvino>ramakrishna ayearago

Helloramakrishna.igotthesameproblem.canuhelp?
canutellmewatudidtoremovethiserror??

Reply Share

gauravrajput ayearago

Page Saved

iamtryingtomakethe3Dinterfaceprojectbutiamfaacingtheprobleminrunningtheprocessingcodein
processing2asiamgettinganerrorascannotfindaclasstypeornamed"Normalized".
Add Tags

pleasehelpmeout.
thanx
rajput.gaurav51@gmail.com

Reply Share

YuriKravchik ayearago

Youcanusesimplerandcheaperwaytogetbetterresultshttps://github.com/paperpointe...

Reply Share

Lysia 2yearsago

HiIamtryingtomakethisproject.AnewbietoArduinoandcoding.
Idon'tgetit,whichcodeshouldIuse?Just3DInterface.ino?
Andwhydotheyhavea3dtictactoecodetoo?

Reply Share

Sumit>Lysia ayearago

uneedtouploadthe3DinterfacecodeintoArduino.Thenruntheprocessingappandopenthe3d
TicTacToecodeinthat.

Reply Share

Jennifer 2yearsago

ICan'tseemtogetthistowork.Thecoordinatessentarejust000.Isanyoneelsehavingthisissue?

ICan'tseemtogetthistowork.Thecoordinatessentarejust000.Isanyoneelsehavingthisissue?

Reply Share

JahaalMordeth>Jennifer ayearago

YeahI'mhavingthatissueaswell.Didyoueverfindafix?

Reply Share

SrenAndreasen>JahaalMordeth 8monthsago

itseemsextremelyshakyhereaswell...getting00andthensomelargerandomnumber
forthelastcoordinate

877

269

Reply Share

daivya 2yearsago

hey,I'mliketodotheprojectyoudid.Caniknowthepurposeofthisproject??
61

Reply Share

OckerOlivier 2yearsago
7

WhyamIgettingtheerror?ThenestedtypeMomentumAveragecannothideanenclosingtype?

Reply Share

AdrianSantillan 2yearsago

itsays"Cannotfindaclassortypecalled"Normalize"andsomeelseintheforumssaidsomethingabout
threeprograms,isn'tprocessingandarduinotheonlyones?

Reply Share

EvanGreally 2yearsago

HiIwasjustwonderingwoulditbepossibletosendthisdatatoPureData
Page Saved

Reply Share

Add Tags
chetanmistry 2yearsago

heyiwanttousethistouchlessinterfaceasmyprojecttopic.butiwantsomeapplicationthaticanbuild
usingthis.asitisaoneyearprojectpleasesuggestmesometopicsinwhichicanuse3dinterface

Reply Share

GiulioAmmendola ayearago

doesn'twork.theserialissending000valueshenceprocessiongisdoingnothing.anyfix?

Subscribe

Reply Share

AddDisqustoyoursiteAddDisqusAdd

Privacy

877

269

61

Page Saved
Add Tags

Vous aimerez peut-être aussi