Sunday, October 20, 2013

How to make the LED guided piano teaching device

Hi there, here goes the manual. (Here is more important manual for your life)

First, I made an android app for the LED guided piano. I am sharing the code at a Github. This android app  parses *any* piano MIDI songs and convert the data into data format for driving the IOIO OTG board.

Materials needed:

2 Meters of LED Strip (WS 2801 based) 
Your android phone.
Micro USB Type A to Type B cable (For connecting your phone to IOIO OTG)
Soldering Supplies.
Breakable pin header.  (This goes to IOIO OTG and LED Strip. This is actually important)
Lots of short jumper wires (female to female)
5 volt 1A power supply and corresponding power jack
(So power supply powers the IOIO OTG, and IOIO OTG directly powers LED strip)
3M Double Sided Tape  (For attaching your LED strip to Piano)

Three critical notes.
The 2 Meters led strip is cut into three parts. One part for powering 20 black keys, one part for powering 21 white keys, and one part for powering 5 black keys and 15 white keys. This is because IOIO OTG can send only 64 bytes of data which correspond to controlling 21 led lights. So this is the setup. Three strips are controlled simultaneously. 

The way you attach the LED strip to the white key. Do not set tapes on every single white keys
For black keys you have to cut the LED strips into pieces of three LED lights and two LED lights to accomodate for distances between the black keys. Also use pin header to connect the LED strip to jumper wires. You do not want to solder the jumper wire directly onto the LED strip because the LED strip can tear easily.

How to connect from IOIO OTG to LED strip:
Solder the pin headers onto the pins of IOIO OTG and LED stip. Connect the headers using female-to-female jumper wires. Here is the setup.

This is the Java code within the android app that tells the IOIO OTG to use pin 1,2 for strip 1,  and pin 4,6 for strip 2, and pin 10,11 for strip 3.

    white= ioio_.openSpiMaster (27,4,6,15 ,Rate.RATE_50K);
    black= ioio_.openSpiMaster (28,1,2,16 ,Rate.RATE_50K);
    three= ioio_.openSpiMaster (29,10,11,17 ,Rate.RATE_50K);

This is the explanation for each input for the above java code.
 spi = ioio.openSpiMaster(misoPin, mosiPin, clkPin, ssPins, Clock rate;

ioio.openSpiMaster does not serve 'null' for the case there is no misoPin or ssPin, so we have to specify misopin or sspin even though they are not used.
pin 27,28,29,15,16,17 are not used.

Monday, October 14, 2013

Use Bacteria for Communication

For security reasons, electromagnetic wave might not be feasible for communication.

Use bacteria. Recombinant technology can put any DNA into bacteria. Write your message into bacteria using DNA, and send the bacteria to the receiver through air, water stream, or dirty surfaces.

Friday, October 4, 2013

LED Guided Piano Playing

I built a piano teacher. I installed LED light on each piano key and turned on and off each of them to show which piano key to press for any given song. (So that any novice should be able to play piano) I don't play piano at all, and this is me playing piano with the help of the device I made. This should not be too hard to build. You will be able to see the instruction manual on how to build this device in 1 or 2 weeks from now. Android app driving the LEDs will be provided as well. As far as I know, no one made this before and I am an amateur, so it had been such a roller coaster ride building this without instruction manuals. But I wanted this device badly enough. It was fun overall. Post your comments here if you have questions.