Project Development
For developping that project, I learn to do the progress very little step by very little step. Because I wanted to do a project very complex, I knew that I couldn't do everything I wanted all by myself. So I started very easy then I define the next little step and improve the project every times I had something that worked, and improving it again and again until the deadline. Here are the step that I followed : 1-Read the input of a resistor Very first step. I tried to plug the resistors from the VCC to the analog input put it didn't work. So I checked about how does a potentiometer work to get inspired. I learn about the voltage divider principle that I will use anytimes in that project. Sparkfun have very good tutorials about basics knowledge in electronics. 2-Convert the input into resistors value. Because Arduino input convert the voltage into a value between 0 and 1023, I had to do an equation that convert that value into a resistors value knowing the input voltage (5V) and the first resistors from the voltage divider. It was probably not really necessary but usefull to check if the system was working fine during the development. 3-Communicate from arduino to grasshopper I heard about the firefly pluggin that allows grasshopper (a parametric pluggin of rhino) to use the serial communication, making easy to generate 3D with arduino input. I had to change the firmata of my board and do a couple of setup to make it work, then I did the very first succesfull test of tangible interface, the easiest possible.
Tangible cube using resistors from hugo moissinac on Vimeo.
4-Define a real concept Then it was time to really define how will it work, what will do what, which parts will I need, what should I learn, etc ... I first thought of doing a 3D multiplexing of resistors, some kind of reverse (input instead of output) of my LED cube. It seems possible but very complex in the connections and too high level for me so I try to simplify as much as possible. The concept that I kept is explain in 16 - Applications and implications 5-Do a model of all possibilities, check viability of the concept Knowing that I will just use vertical mesure of resistors plugged one on top of the others, I needed to know how much pieces could I use and what kind of resistors are appropriate for this application. I made a code where I choose the value of resistors and the number of pieces I want, then it tell me the arduino input so I could know if it is accurate enough. Processing Sketch 6-Use processing instead of grasshopper, read a resistor value Playing with processing for those tests, I discovered it was possible to do 3d with it. Because I knew some java already but no grasshopper, it seems to me that it was a good option. As well processing is open-source which is a good reason to use it. So I tried again to read a resistors value in processing. 7-Read multiple value in multiple analog input (horizontal) I made a few mistake on that one because I was confused about if the VCC should be common or if the ground should be common. Finally I have 4 digital output that send 5 Volts and 4 analog input that read the values, and one common ground.
test cube from hugo moissinac on Vimeo.
12-Search for good and cheap connectors Because working in series was easier, I needed to find connectors that automatically close the circuit when nothing is plugged in so the construction kit is easier to play with (don't need to add and remove an extra piece that close the circuit each time a part is added). Those connectors are common in audio connections to avoid strange noise with static electricity (larsen?). I choose to use the RCA single switch connectors because they were as well pretty strong so they add mechanical properties (good for a construction kit).PJRAN1X1U04X 13-Design the construction kit Having those connectors, I could start to design the construction kit in a size that allows to put the connectors and resitors inside. I choose a 1/5 scale (based on the scale 1 I had imagine). I designed a lot of pieces but finally I didn't use all of them. 14-Play with tolerance for 3D printing I improve the 3D model by printing a test, try, modify, play with the settings, print again ... I needed to add a curvature to avoid 90° angle in the void, and I needed to add some tolerance in my files to allows the part to clip one in the other, and for the connectors to enter in the parts but don't go out. Files are too heavy to put all of them but here is an examplle of one of the pieces.




tangik from hugo moissinac on Vimeo 21-Improve the code I create a small interface, create a reset function and some other usefull stuff. But the hardest part was to recognize if 4 joints for an horizontal part are at the same level, so the software generate the horizontal part despite it don't have resistors inside. All my code was propper because if I wanted to use 16, 32 or more input and more pieces I just needed to change 2 value in the setup and the rest was following. But for that one I couldn't manage to find a clever way (and miss time) so I just write one by one all the possibilities in the code. Still lot to do, but already something ! Check the final presentation. Final bill (for 18 pieces) : Part number following when necessary -27 RCA single switch female connectors PJRAN1X1U04X: 13$ -1 double sided copper board: 10$ (really ?!) -40 Resistors : 1$ -18 RCA male connectors : 3$ -100? single connectors : 2$ -Wires (1 meters ?) : 1$ -Analog multiplexer : 2$ -PLA for 3D printing : 2$ ? -Very small amount of epoxy : 0.1$ -Trash wood : 0$ TOTAL : 34$ ... And a cosmino (fabkit) and a computer to run the interface ... But that's more prerequisites than part of the project !