Physical tone matrix

[Andrew Jenner] pulled off something amazing with this Physical Tone Matrix. He wanted to build a physical version of a flash applet he had seen. Two layers make up the main user interface. The top layer is a sheet of acrylic that acts as a touch interface and below there’s an LED matrix. [Andrew's] touch interface uses wires running throughout the acrylic as contacts which are polled via transistor pairs. As you can see in the video after the break it works well and we like the fact that there’s a tactile component (due to the bumpy wires) you don’t get when working with a touchscreen.

The 16×16 grid of LEDs on the bottom layer correspond to each ‘button’ on the touch matrix hand have some extra functions such as playing Conway’s Game of Life. This fantastic build still has a couple of kinks to work out, most notably the interference in the audio circuit, but we’re quite impressed at what he’s achieved quickly. Plus, this is more economical than a monome and larger than some of the monome clones we’ve seen.

Comments

  1. kernelcode says:

    I like this a lot!

  2. Brennan says:

    To those that are more knowledgeable than I, what exactly is the difference between assembly code and “heavily optimized assembly language”?

  3. Jones says:

    Anyone else have problems playing youtube links in chrome on this site. Webmaster….look into it

  4. Brennan, I would say it’s just a quantitive difference in the amount of time spent counting cycles and trying to shave off an instruction or two from a critical inner loop. I think most of the loops in the interrupt routine can’t be made any faster without sacrificing functionality, but I’d love to be proved wrong!

  5. nemo says:

    @Brennan-It is close to the most efficient code for the specific application.

  6. yosh says:

    Is he smoking indoors? Or is that magic smoke from his creation? ^-^

  7. FredP says:

    @Brennan – It is also known as write only code.

  8. yosh, I had to rewatch the video to see what you were talking about. I think it’s just the bright LEDs causing oversaturation and bloom in the camera’s CCD when the ambient light is low and the exposure length increases. Weird that it seems to “move up” like smoke though.

  9. Mistah Specs says:

    I NEED to make that screen.

  10. Oz says:

    @Jones comment “Anyone else have problems playing youtube links in chrome on this site. Webmaster….look into it”

    Nope, works great for me.

  11. sneakypoo says:

    Can’t LEDs be turned into “touch” sensors? I seem to recall someone “painting” on an LED matrix using his fingers. That way he could’ve avoided that plastic sheet.

  12. therian says:

    if author read classic “art of electronics” instead playing with Arduino he would know that LEDs can be used as input device so whole top layer which he made is extra garbage

  13. therian says:

    and it would be not just “touchscreen” but a 3D capable input device

  14. anon says:

    @Brennen – using for example C, you need to include heavy librarys such as stdio, which would also contain a load of other unused functions.

    using ASM you can write the code 100% your self, with no dead code.

  15. Alber says:

    @therian. Where’s the 3rd dimension?

  16. Tachikoma says:

    Gee a lot of vitriolic comments here regarding touch sensing.

    Yes there is a better way of doing it.

    But there is nothing wrong with doing things the “hard way” or the “unorthodox” way. It’s called learning… and *gasp* … fun even!

  17. Brennan says:

    @anon and others:
    Yes, I understand the difference between C and assembly, but assembly by itself is a very low level language, and I actually find it hard to have extraneous/unnecessary code when you are programming in assembly. So I think the term “optimized” is rather redundant, unless you are literally counting and shaving off instruction cycles to get your timing perfect. More power to him for coding in assembly, but I think it’s a bit of a fluff term.

  18. nemo says:

    @brennan-optimized assembly is not a “fluff” term. it is exactly what you describe, shaving off clock cycles until it is as fast or perfect as it can be. even when writing in pure assembly there are often many optimizations that can be made.

  19. ipad case says:

    can’t access to youtube right now , but will definitely check it out

  20. I love the fact that he wrote it in ASM.

  21. sneakypoo says:

    @Tachikoma: There was exactly one vitriolic comment. My comment was just a simple reflection on his approach that could perhaps give him an idea for an improvement. It’s called discussing and *gasp* it can be educational even.

  22. @therian, I have read the Art of Electronics and there’s nothing in there about using LEDs as touch sensors – I think the technique is more recent than 1989. It could be used here but it’s not necessarily a better way – it makes the electronics much more complicated because you can’t just use simple shift registers. It would reduce the LED duty cycle since you need part of the cycle for the detection. Finally, I don’t think it works if the LED is off.

  23. @Brennan, I did indeed count and shave off instruction cycles to get the timing perfect – the longest possible timer interrupt is (if I’ve counted correctly) 1019 cycles – only 5 to spare!

  24. Jay says:

    It’s like a homemade tenori-on

  25. DeFex says:

    IS that 800hz max2721 noise i hear? its a real pain to isolate, can propagate through ground wires and everything, Best run that IC on a completely separate power supply from any audio.

  26. @DeFex, there’s no MAX2721 in this (that’s a cellphone modulator isn’t it?). The noise is caused by the LEDs using a lot of current (~500mA peak) at 977Hz (the line rate of my LED matrix) and putting ripples on the power supply lines. I should have used larger decoupling capacitors to smooth this out – I miscalculated when figuring out how much capacitance I needed.

  27. therian says:

    @Alber the height of hand above LED array is 3rd dimension
    @Andrew Jenner yes book dos not contain anything about touchscreens but it mention LED as light input device

  28. DeFex says:

    oops i meant max 7221 :) which does pretty much the same noise and for the same reason as your matrix, and its quite hard to get rid of, even with capacitors.

  29. @therian, the closest thing I can find is on page 996 where it says “A diode junction acts as a photodector”, but then it goes on to talk about photodiodes (which are designed for light detection, and are not LEDs). I might have missed something though – it’s a big book.

    @DeFex, I think it’s just a question of using enough capacitors – as long as the decoupling capacitance is much larger than the current ripple amplitude divided by the product of the voltage ripple amplitude and ripple frequency, the capacitor should be able to smooth out the ripples.

  30. kernelcode says:

    @Andrew: You may find a series inductor helps too

  31. @kernelcode, it might, but inductors bring their own engineering headaches. You need a very large inductor (>0.01H for 500mA at 5V and 1000Hz) which is relatively expensive at the DC currents required. An inductor will generate a very large voltage when the power is turned off, so you need some kind of protection in there. Then there’s the problem of resonance with any capacitance you’ve got across the circuit.

  32. TJ says:

    There’s nothing ‘fluffy’ or imaginative about heavily optimized assembly. There was a time when clock speeds hovered around 1mHz and 12K of RAM was a lot, and in those times a lot of people had no other choice.

    Try doing a code conversion, speed conversion, and I/O in 1K sometime & you’ll want to learn about shaving corners in a hurry.

  33. Nick says:

    You calculate your decoupling caps?? ha ha pull the other one mate.. :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 96,386 other followers