513
edits
No edit summary |
No edit summary |
||
Line 39: | Line 39: | ||
4) reverse engineering and connecting a keyboard matrix with Arduino + exploring its functions <br> | 4) reverse engineering and connecting a keyboard matrix with Arduino + exploring its functions <br> | ||
5) the toy keyboard matrix as a resistive sensor | 5) the toy keyboard matrix as a resistive sensor | ||
6) exploring different ways of implementing switches in a carpet | 6) exploring different ways of implementing switches in a carpet | ||
== Protoyping experiments == | == Protoyping experiments == | ||
<br> | |||
'''1) DIY Sensor Materials''' | '''1) DIY Sensor Materials''' | ||
During the first class we investigated different materials and their conductivity / resistivity. | During the first class we investigated different materials and their conductivity / resistivity.<br> | ||
I was mostly interested in materials that produce variable resistance when they are pushed and | I was mostly interested in materials that produce variable resistance when they are pushed and | ||
squeezed like „resistive plastic foam“. | squeezed like „resistive plastic foam“. | ||
Line 62: | Line 61: | ||
'''2) „Button Resistor Ladder“'''<br> | '''2) „Button Resistor Ladder“'''<br> | ||
The first experiment including matrix structures was about a chain of buttons. | The first experiment including matrix structures was about a chain of buttons.<br> | ||
Each of these buttons were connected via different resistor values. | Each of these buttons were connected via different resistor values.<br> | ||
The last resistor of that kind of „resistor ladder“ connects the whole structure to the Arduinos analog input via a voltage divider with a 100K resistor. | The last resistor of that kind of „resistor ladder“ connects the whole structure to the Arduinos analog input via a voltage divider with a 100K resistor.<br> | ||
—> see the circuit drawing below <br><br> | —> see the circuit drawing below <br><br> | ||
This „button - resistor structure“ assures that each button provokes a specific and distinguishable value in the Arduinos serial reading. | This „button - resistor structure“ assures that each button provokes a specific and distinguishable value in the Arduinos serial reading.<br> | ||
The experiment could lead to a more complex button structure that can be used as an „analog input matrix“. | The experiment could lead to a more complex button structure that can be used as an „analog input matrix“. | ||
Line 81: | Line 80: | ||
'''3) hacking a toy keyboard, triggering it with relays + exploring its inner architecture''' | '''3) hacking a toy keyboard, triggering it with relays + exploring its inner architecture''' | ||
In the second experiment we took a closer look at a toy including a keyboard matrix to play a funny collection of sounds. | In the second experiment we took a closer look at a toy including a keyboard matrix to play a funny collection of sounds.<br> | ||
At first we traced each tone back to its switch on the matrix. | At first we traced each tone back to its switch on the matrix.<br> | ||
Then we soldered external wires to the sound terminals in order to make the sounds externally accessible. | Then we soldered external wires to the sound terminals in order to make the sounds externally accessible. | ||
Line 89: | Line 88: | ||
[[File:hacked_toy_matrix_l2.jpg]]<br><br> | [[File:hacked_toy_matrix_l2.jpg]]<br><br> | ||
We had the idea to further influence and control the sounds with an external switching device. | We had the idea to further influence and control the sounds with an external switching device.<br> | ||
Our solution was a chain of two relays controlled by the arduino via a multiple transistor IC (ULN…). | Our solution was a chain of two relays controlled by the arduino via a multiple transistor IC (ULN…).<br> | ||
These relays allowed us to turn the sound on and off so that little pieces of the sounds could be cut out. | These relays allowed us to turn the sound on and off so that little pieces of the sounds could be cut out. | ||
Line 101: | Line 100: | ||
After that I decided to explore the toy matrix a little further. | After that I decided to explore the toy matrix a little further.<br> | ||
A drawing helped me to understand and trace the connections inside the matrix structure. | A drawing helped me to understand and trace the connections inside the matrix structure.<br> | ||
I then attached a DIY connector in order to use the bottom connectors. | I then attached a DIY connector in order to use the bottom connectors. | ||
Line 115: | Line 114: | ||
'''4) Reverse-engineering and programming a common keyboard matrix''' | '''4) Reverse-engineering and programming a common keyboard matrix''' | ||
This is a common keyboard matrix with a 4 x 3 buttons number plate. | This is a common keyboard matrix with a 4 x 3 buttons number plate.<br> | ||
I „reverse engineered“ the matrix structure (hidden in the case) after I soldered pin headers to its connectors in order to plug it into the bread board. | I „reverse engineered“ the matrix structure (hidden in the case) after I soldered pin headers to its connectors in order to plug it into the bread board.<br> | ||
I was mostly interested in using the matrix as a variable resistor rather than using it as a „multiple digital pin input device“. (see experiment no. 2) | I was mostly interested in using the matrix as a variable resistor rather than using it as a „multiple digital pin input device“. (see experiment no. 2)<br> | ||
I achieved that by connecting different resistor values in between each contact of the vertical and the horizontal button lines. | I achieved that by connecting different resistor values in between each contact of the vertical and the horizontal button lines.<br> | ||
In the end a voltage divider helped to create different voltage changes for the Arduinos analog input. | In the end a voltage divider helped to create different voltage changes for the Arduinos analog input.<br> | ||
The matrix is actually meant to be used as a "multiple digital pin input / output interface" like shown on this website (http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) . <br><br> | The matrix is actually meant to be used as a "multiple digital pin input / output interface" like shown on this website (http://pcbheaven.com/wikipages/How_Key_Matrices_Works/) . <br><br> | ||
In my experiment every button represents a certain value in the analog input. | In my experiment every button represents a certain value in the analog input.<br> | ||
By doing that I discovered a major problem: some of the values almost overlapped. | By doing that I discovered a major problem: some of the values almost overlapped. <br> | ||
Another problem was the amount of noise produced by the analog input. <br><br> | Another problem was the amount of noise produced by the analog input. <br><br> | ||
Therefore I had to define a certain range of values for each button. | Therefore I had to define a certain range of values for each button. <br> | ||
Although this worked a bit better there was still a lot of overlap. | Although this worked a bit better there was still a lot of overlap.<br> | ||
This overlap sometimes lead to the effect that the interpretation of buttons being pressed was wrong. <br><br> | This overlap sometimes lead to the effect that the interpretation of buttons being pressed was wrong. <br><br> | ||
Another interesting part of that experiment was the code. | Another interesting part of that experiment was the code.<br> | ||
I did not use any library - instead of that I tried to use my basic programming skills to set it up by myself. | I did not use any library - instead of that I tried to use my basic programming skills to set it up by myself.<br> | ||
It surprisingly worked out quite well - despite the mentioned overlap problem and the face that I needed a lot of memory. <br><br> | It surprisingly worked out quite well - despite the mentioned overlap problem and the face that I needed a lot of memory. <br><br> | ||
In order to solve these issues in the future I need to learn about programming „arrays“ and „forloops“ that can help minimizing the amount of code. | In order to solve these issues in the future I need to learn about programming „arrays“ and „forloops“ that can help minimizing the amount of code.<br> | ||
The overlap problem could be solved by using binary functions / average measurements that define clearer value states. <br><br> | The overlap problem could be solved by using binary functions / average measurements that define clearer value states. <br><br> | ||
Line 147: | Line 146: | ||
The idea of using a matrix as a variable resistor was a good way of connecting the toy-keyboard to the arduinos analog input.<br><br> | The idea of using a matrix as a variable resistor was a good way of connecting the toy-keyboard to the arduinos analog input.<br><br> | ||
My hacked version of the toy keyboard does not really work as a system of clear state switches. | My hacked version of the toy keyboard does not really work as a system of clear state switches.<br> | ||
I used a very resistive material in order to access the matrix (graphite lines). | I used a very resistive material in order to access the matrix (graphite lines).<br> | ||
This material in combination with the original matrix circuit material (also very resistive) makes it hard to define clear input values.<br><br> | This material in combination with the original matrix circuit material (also very resistive) makes it hard to define clear input values.<br><br> | ||
Line 167: | Line 166: | ||
'''6) exploring different ways of implementing switches in a carpet''' | '''6) exploring different ways of implementing switches in a carpet''' | ||
The final idea after my matrix explorations is to modify our environment by implementing a similar structure in everyday objects. | The final idea after my matrix explorations is to modify our environment by implementing a similar structure in everyday objects.<br> | ||
I want to use a carpet as the main interface object as it is 1) easy to access and 2) something casual and omnipresent. | I want to use a carpet as the main interface object as it is 1) easy to access and 2) something casual and omnipresent.<br> | ||
The first problem is to install switches inside / underneath the carpet. | The first problem is to install switches inside / underneath the carpet.<br> | ||
I solved this problem by using an anti-sliding mat that separates the contacts of the switches. | I solved this problem by using an anti-sliding mat that separates the contacts of the switches.<br> | ||
It is a very flexible material that is easy to manipulate without the need of professional tools. | It is a very flexible material that is easy to manipulate without the need of professional tools.<br> | ||
Another problem is designing and building the switches. | Another problem is designing and building the switches. <br> | ||
The material needs to be 1) flexible (coming back into its original form) and 2) conductive. | The material needs to be 1) flexible (coming back into its original form) and 2) conductive.<br> | ||
I experimented with different materials such as aluminium foil, aluminium plates and a conductive sponge. | I experimented with different materials such as aluminium foil, aluminium plates and a conductive sponge.<br> | ||
My solution consists of a piece of cardboard covered with aluminium foil. <br><br> | My solution consists of a piece of cardboard covered with aluminium foil. <br><br> | ||
Line 183: | Line 182: | ||
I also discovered that the size of the gaps inside the flexible grid plays a big role in connection to the performance of the switches. | I also discovered that the size of the gaps inside the flexible grid plays a big role in connection to the performance of the switches.<br> | ||
I tried different sizes until I found a size that responds to the size and pressure of an „average human footstep“. <br><br> | I tried different sizes until I found a size that responds to the size and pressure of an „average human footstep“. <br><br> | ||
edits