The whole structure necessary to sustain the 24 tentacles and host the just as many servomotors (each one equipped with an arm screwed on the small shaft using the provided screws), and the electronic boards (i.e. the frame…) has been designed using Google SketchUp and 3D-printed using PLA; the actual frame can be printed using the STL file. Then, you have to apply the metal details on the frame which are needed for assembling the various parts such as the tentacles fulcrum; more precisely, the frame is made of several parts (edges, lower junction element, front cross piece…) to be screwed together.

Each servo activates a tentacle (this also has been 3D printed and the STL file is available on our website along the other file for the project) through a conveniently shaped rod obtained by straightening a 0.9 mm stainless steel wire. The wire is then bent over in order to attach both on the servo shaft end and on the home provided for the corresponding tentacle.

Since it is possible that the keyboard will move around during the operation due to pressure applied by the tentacles, it is recommended to attach the frame to the keyboard itself, for instance, you can use some right-angled metal strips attached to the bottom of the musical instrument, or you can place and screw the mechanical section to a wooden or plastic base plate and, once determined the optimal position, attach it to the keyboard with conveniently 3-D printed small square that are going to be screwed on the baseplate. 


Key functions

I can see how to use it and therefore how i can play our special instrument. Below, i describe keys functioning.

Reset of all servos’ positions

Before activating the control lever related to the tentacle on the pivot of each servo, we have to place all the servos at half run (central position, -90°); this operation is necessary in order to make sure that once the servos are brought to zero, all the arms are in resting position. In order to reset position of all the servos, we have to press and hold the Exit/STOP key and then power on; the display will show the message “reset in progress”, after that all the servos’ pivots will get in central position and the display will show “reset successfully”. Now release the key. After that, apply the respective lever on each pivot so that the related tentacle will stroke (without pressing) the corresponding key.

Programming mode

Let’s take a look at how to program pressure position of the key corresponding to every single tentacle. Each servo must be assigned a position that allows pressing the signed key.

Track selection/ PLAY / STOP

When the system is on standby, the display will show the message “track selection” followed by the actual track number (of the ringtone). In order to start execution of the track, press PLAY (the display will show for instance “Play track n° 1); to stop reproduction press STOP.

Firmware

Where you will find the ringtones to play and the instructions to do so. The system provides for 30 ringtones to be played: this is defined in the instruction int Tracce_Max = 29; in the sketch initialization. Please note that 30 corresponds to the value 29 because we are starting from 0. By editing this value, you can edit the max number of ringtones you can play.

Each melody is made according to the RTTTL standard which calls for the definition of each note with related duration, with a command separating it from the previous and the next one. Typical string format is: 

const char PROGMEM MusicSongPlay1[] = “wewish:d=4,o=5,b=140:d,g,8g,8a,8g,8f#,e,c,e,a,8a,8b,8a,8g,f#,d,f#,b,8b,8c6,8b,8a,g,e,8d,8d,e,a,f#,2g.”; 

this refers to execution of wewish ringtone, composed by the notes defined by the letter with the comma, followed by =, and duration, therefore d=4, o=5, b=140 etc. (d is duration, o is the octave and b are the beats). Please note that these instructions can be composed by writing them in Arduino’s IDE, or directly copy them from ringtone websites since these are provided with the same syntax.

Generally, those websites provide files that can be opened with a text editor (they are .txt files); in order to write the music all you have to do is copy the specific text string and paste it in Arduino’s IDE editor.

In the sketch, each note is defined by the instruction: #define NOTE_C4  262

Which specifies the position of the servo to be activated in order to press the corresponding key on the keyboard.

For what concerns shields routing, the Octopus.h library is preset so that outputs 0÷15 refer to the shield labeled as 0, and 16÷32 outputs refer to the shield labeled as 1, etc. Therefore, before applying the shields to Arduino or Fishino you have to set the address jumpers of the first shield as 000 and the second ones as 001, otherwise, correlation between notes and servos established by the firmware will not be respected.