loading
This project is a part of experiments done while doing an artist in residence at Instructables. You can see the other projects here.

Making a plant sing has been a trick since the Theremin was invented. Here I am going to teach you how to do this with and arduino board, a gameduino shield and a the touch shield from my previous instructable.

A short introduction to capacitance 
If two objects are conductive you can measure the capacitance between them (e.g. objects like: metal, water, human bodies and plants). By connecting a capacitance sensor to a plant we can detect if people are touching it and convert the touch into sound. Normally you would do this with a theremin like interface. 



With the introduction of the touché frequency principle by Disney Research lab we can now make a really stable solution that can run entirely on the Arduino platform. The Touché works on a similar principle as a normal theremin, but does a frequency sweep instead. By hooking the touché up to the plant we can measure the capacitative interaction and convert it into sound.


Credits:
The singing plant as an artistic project has been done with multiple people as a member of illutron. I will just credit af few key people who I have worked with:  Åsmund Boye Kverneland, Nicolas Padfield, Thomas Jørgensen, Schack Lindemann, Thor Lentz, DZL, Vanessa Carpenter


Step 1: Components and tools

Components needed:
  • Arduino
  • Homemade touche shield (Instructable can be found here)
  • Gameduino (We are going to use it for sound).
  • Two buttons.
  • A couple of Alligator clips.
  • Two banana connectors.
  • Enclosure (I used a wooden box from http://www.containerstore.com/welcome.htm)

Components needed for the touche shield:
  • Prototyping shield
  • Pin headers
  • Resister: 10k, 1MOmh, 3,3k
  • Capacitor: 100pf, 10nf
  • Diode: 1N4148 diode
  • Coil / inductor: 10mH (cypax.dk  part no: 07.055.0510)

Tools:
  • Basic soldering tools.
  • Wood working tools.
For the enclosure I lasercut an acrylic plate, but you could just as well use a piece of wood and cut it manually.
<p>I am trying to avoid spending $30+ on a gameduino. I'm a beginner with a RedBoard and created the touche shield on a breadboard, but as far as the gameduino goes, is there any possible way I can avoid using it? </p>
<p>I have problems when compiling/verifying the code of Singingplant.ino</p><p>it comes the error &quot;'prog_uchar' does not name a type&quot; when he's at</p><p>#include &quot;mont.h&quot;</p><p> long started =0;</p><p> int ticks = 0;</p><p> prog_uchar *pc;</p><p>// visualize voice (v) at amplitude (a) on an 8x8 grid</p><p>the detailed error is </p><p>Arduino: 1.6.5 (Mac OS X), Platine: &quot;Arduino Uno&quot;</p><p>In file included from singingPlant.ino:3:0:</p><p>/Users/benell/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:51:39: error: 'prog_uchar' has not been declared</p><p> static void copy(unsigned int addr, prog_uchar *src, int count);</p><p> ^</p><p>/Users/benell/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:62:25: error: 'prog_uchar' has not been declared</p><p> static void microcode(prog_uchar *src, int count);</p><p> ^</p><p>/Users/benell/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:63:45: error: 'prog_uchar' has not been declared</p><p> static void uncompress(unsigned int addr, prog_uchar *src);</p><p> ^</p><p>In file included from singingPlant.ino:5:0:</p><p>mont.h:1: error: 'prog_uchar' does not name a type</p><p> static PROGMEM prog_uchar mont[] = {</p><p> ^</p><p>singingPlant:8: error: 'prog_uchar' does not name a type</p><p>singingPlant.ino: In function 'void setup()':</p><p>singingPlant:82: error: 'pc' was not declared in this scope</p><p>singingPlant:82: error: 'mont' was not declared in this scope</p><p>singingPlant.ino: In function 'void loop()':</p><p>singingPlant:143: error: 'pc' was not declared in this scope</p><p>singingPlant:143: error: 'mont' was not declared in this scope</p><p>In file included from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:28:0,</p><p> from /Applications/Arduino.app/Contents/Java/hardware/arduino/avr/libraries/SPI/SPI.h:17,</p><p> from singingPlant.ino:2:</p><p>singingPlant:157: error: 'pc' was not declared in this scope</p><p>singingPlant:170: error: 'pc' was not declared in this scope</p><p>singingPlant:173: error: 'pc' was not declared in this scope</p><p>singingPlant:178: error: 'pc' was not declared in this scope</p><p>'prog_uchar' does not name a type</p><p> Dieser Report h&auml;tte mehr Informationen mit</p><p> &quot;Ausf&uuml;hrliche Ausgabe w&auml;hrend der Kompilierung&quot;</p><p> aktiviert in Datei &gt; Einstellungen</p><p>Seems that some other user had the same problem. Does anyone know about a solution?</p>
<p>Hi, try to go in GD.h and move this string: &quot;typedef const unsigned char prog_uchar;&quot;</p><p>how in the photo. You should resolve your problem. :)</p><p>Bye!</p>
<p>That would be me. Have found no solution so far, which is a pity. It seems the subject is &quot;dead&quot;.</p>
<p>I made it to upload the code by using an older arduino version. It still doesn't work though, but it must be some other problem/mistake of mine.</p>
<p>I'm running into an issue. The guino library does not show up in the libraries section in the arduino application, and I am getting these errors when I try to run the singing plant code:</p><p>Guino Library doesn&rsquo;t show up in arduino app</p><p>Arduino: 1.6.7 (Mac OS X), Board: &quot;Arduino/Genuino<br>Uno&quot;</p><p>In file included from<br>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/singingPlant.ino:1:0:</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/font8x8.h:1:16:<br>error: 'prog_uchar' does not name a type</p><p> static PROGMEM<br>prog_uchar font8x8[] = {</p><p> ^</p><p>In file included from<br>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/singingPlant.ino:2:0:</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:51:39:<br>error: 'prog_uchar' has not been declared</p><p> static void<br>copy(unsigned int addr, prog_uchar *src, int count);</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:62:25:<br>error: 'prog_uchar' has not been declared</p><p> static void<br>microcode(prog_uchar *src, int count);</p><p> <br>^</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:63:45:<br>error: 'prog_uchar' has not been declared</p><p> static void<br>uncompress(unsigned int addr, prog_uchar *src);</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:<br>In member function 'int Asset::read(void*, uint16_t)':</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:200:7:<br>error: 'SPI' was not declared in this scope</p><p> <br>SPI.transfer(0x03);</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:<br>In member function 'int Asset::load(uint16_t)':</p><p>/Users/shuffey/Documents/Arduino/libraries/Gameduino_midified_to_pin4/GD.h:225:11:<br>error: 'SPI' was not declared in this scope</p><p> SPI.transfer(buf[i]);</p><p> ^</p><p>In file included from<br>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/singingPlant.ino:8:0:</p><p>sketch/mont.h: At global scope:</p><p>mont.h:1: error: 'prog_uchar' does not name a type</p><p> static PROGMEM prog_uchar<br>mont[] = {</p><p> ^</p><p>singingPlant:11: error: 'prog_uchar' does not name a type</p><p> prog_uchar *pc;</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:<br>In function 'void setup()':</p><p>Guino_library:85: error: 'pc' was not declared in this scope</p><p> SEND_DATA_STRUCTURE<br>guino_data;</p><p> ^</p><p>Guino_library:85: error: 'mont' was not declared in this<br>scope</p><p> SEND_DATA_STRUCTURE<br>guino_data;</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:<br>In function 'void loop()':</p><p>Guino_library:146: error: 'pc' was not declared in this<br>scope</p><p> void<br>gGetSavedValue(int item_number, int *_variable)</p><p> ^</p><p>Guino_library:146: error: 'mont' was not declared in this<br>scope</p><p> void<br>gGetSavedValue(int item_number, int *_variable)</p><p> ^</p><p>In file included from<br>/Users/shuffey/Downloads/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h:28:0,</p><p> from<br>sketch/singingPlant.ino.cpp:1:</p><p>Guino_library:160: error: 'pc' was not declared in this<br>scope</p><p> {</p><p> ^</p><p>Guino_library:173: error: 'pc' was not declared in this<br>scope</p><p> <br>gSendCommand(guino_executed, 0, 0);</p><p> ^</p><p>Guino_library:176: error: 'pc' was not declared in this<br>scope</p><p> <br>gSendCommand(guino_iamhere, 0, 0); </p><p> ^</p><p>Guino_library:181: error: 'pc' was not declared in this<br>scope</p><p> <br>if(guino_maxGUIItems &gt; guino_item_counter)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:<br>In function 'void gInit()':</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:254:28:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> }</p><p> <br>^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:260:60:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> <br>if(guino_maxGUIItems &gt; guino_item_counter)</p><p> <br>^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:261:34:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> {</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:262:58:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> <br>gAddLabel(_name,guino_small);</p><p> <br>^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:263:42:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> <br>guino_item_values[guino_item_counter] =_variable ;</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:264:48:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> <br>gGetSavedValue(guino_item_counter, _variable);</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_library.ino:265:36:<br>warning: deprecated conversion from string constant to 'char*'<br>[-Wwrite-strings]</p><p> <br>gSendCommand(guino_addWaveform,(byte)guino_item_counter,_size);</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>At global scope:</p><p>Guino_libray:42: error: redefinition of 'boolean<br>guidino_initialized'</p><p> boolean<br>guidino_initialized = false;</p><p> ^</p><p>Guino_library:42: error: 'boolean guidino_initialized'<br>previously defined here</p><p> boolean<br>guidino_initialized = false;</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void EEPROMWriteInt(int, int)':</p><p>Guino_libray:45: error: redefinition of 'void<br>EEPROMWriteInt(int, int)'</p><p> void<br>EEPROMWriteInt(int p_address, int p_value)</p><p> ^</p><p>Guino_library:45: error: 'void EEPROMWriteInt(int, int)' previously<br>defined here</p><p> void<br>EEPROMWriteInt(int p_address, int p_value)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'unsigned int EEPROMReadInt(int)':</p><p>Guino_libray:55: error: redefinition of 'unsigned int<br>EEPROMReadInt(int)'</p><p> unsigned int<br>EEPROMReadInt(int p_address)</p><p> ^</p><p>Guino_library:55: error: 'unsigned int EEPROMReadInt(int)'<br>previously defined here</p><p> unsigned int<br>EEPROMReadInt(int p_address)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>At global scope:</p><p>Guino_libray:64: error: redefinition of 'EasyTransfer ET'</p><p> EasyTransfer ET; </p><p> ^</p><p>Guino_library:64: error: 'EasyTransfer ET' previously<br>declared here</p><p> EasyTransfer ET; </p><p> ^</p><p>Guino_libray:66: error: redefinition of 'struct<br>SEND_DATA_STRUCTURE'</p><p> struct<br>SEND_DATA_STRUCTURE</p><p> ^</p><p>Guino_library:66: error: previous definition of 'struct<br>SEND_DATA_STRUCTURE'</p><p> struct SEND_DATA_STRUCTURE</p><p> ^</p><p>Guino_libray:76: error: redefinition of 'int<br>guino_maxGUIItems'</p><p> int guino_maxGUIItems<br>= 100;</p><p> ^</p><p>Guino_library:76: error: 'int guino_maxGUIItems' previously<br>defined here</p><p> int guino_maxGUIItems<br>= 100;</p><p> ^</p><p>Guino_libray:77: error: redefinition of 'int<br>guino_item_counter'</p><p> int<br>guino_item_counter = 0;</p><p> ^</p><p>Guino_library:77: error: 'int guino_item_counter' previously<br>defined here</p><p> int<br>guino_item_counter = 0;</p><p> ^</p><p>Guino_libray:78: error: redefinition of 'int*<br>guino_item_values [100]'</p><p> int<br>*guino_item_values[100]; </p><p> <br>^</p><p>Guino_library:78: error: 'int* guino_item_values [100]'<br>previously declared here</p><p> int<br>*guino_item_values[100]; </p><p> ^</p><p>Guino_libray:79: error: redefinition of 'int gTmpInt'</p><p> int gTmpInt = 0; //<br>temporary int for items without a variable</p><p> ^</p><p>Guino_library:79: error: 'int gTmpInt' previously defined<br>here</p><p> int gTmpInt = 0; //<br>temporary int for items without a variable</p><p> ^</p><p>Guino_libray:80: error: redefinition of 'boolean<br>internalInit'</p><p> boolean internalInit<br>= true; // boolean to initialize before connecting to serial</p><p> ^</p><p>Guino_library:80: error: 'boolean internalInit' previously<br>defined here</p><p> boolean internalInit<br>= true; // boolean to initialize before connecting to serial</p><p> ^</p><p>Guino_libray:85: error: redefinition of 'SEND_DATA_STRUCTURE<br>guino_data'</p><p> SEND_DATA_STRUCTURE<br>guino_data;</p><p> ^</p><p>Guino_library:85: error: 'SEND_DATA_STRUCTURE guino_data'<br>previously declared here</p><p> SEND_DATA_STRUCTURE<br>guino_data;</p><p> ^</p><p>Guino_libray:86: error: redefinition of 'int eepromKey'</p><p> int eepromKey = 1234;</p><p> ^</p><p>Guino_library:86: error: 'int eepromKey' previously defined<br>here</p><p> int eepromKey = 1234;</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void guino_update()':</p><p>Guino_libray:87: error: redefinition of 'void<br>guino_update()'</p><p> void guino_update()</p><p> ^</p><p>Guino_library:87: error: 'void guino_update()' previously<br>defined here</p><p> void guino_update()</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gInitEEprom()':</p><p>Guino_libray:126: error: redefinition of 'void<br>gInitEEprom()'</p><p> void gInitEEprom()</p><p> ^</p><p>Guino_library:126: error: 'void gInitEEprom()' previously<br>defined here</p><p> void gInitEEprom()</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gSetColor(int, int, int)':</p><p>Guino_libray:139: error: redefinition of 'void<br>gSetColor(int, int, int)'</p><p> void gSetColor(int<br>_red, int _green, int _blue)</p><p> ^</p><p>Guino_library:139: error: 'void gSetColor(int, int, int)'<br>previously defined here</p><p> void gSetColor(int<br>_red, int _green, int _blue)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gGetSavedValue(int, int*)':</p><p>Guino_libray:146: error: redefinition of 'void<br>gGetSavedValue(int, int*)'</p><p> void<br>gGetSavedValue(int item_number, int *_variable)</p><p> ^</p><p>Guino_library:146: error: 'void gGetSavedValue(int, int*)'<br>previously defined here</p><p> void<br>gGetSavedValue(int item_number, int *_variable)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gBegin(int)':</p><p>Guino_libray:159: error: redefinition of 'void gBegin(int)'</p><p> void gBegin(int<br>_eepromKey)</p><p> ^</p><p>Guino_library:159: error: 'void gBegin(int)' previously<br>defined here</p><p> void gBegin(int<br>_eepromKey)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddButton(char*)':</p><p>Guino_libray:179: error: redefinition of 'int<br>gAddButton(char*)'</p><p> int gAddButton(char *<br>_name)</p><p> ^</p><p>Guino_library:179: error: 'int gAddButton(char*)' previously<br>defined here</p><p> int gAddButton(char *<br>_name)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gAddColumn()':</p><p>Guino_libray:194: error: redefinition of 'void gAddColumn()'</p><p> void gAddColumn()</p><p> ^</p><p>Guino_library:194: error: 'void gAddColumn()' previously<br>defined here</p><p> void gAddColumn()</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddLabel(char*, int)':</p><p>Guino_libray:204: error: redefinition of 'int<br>gAddLabel(char*, int)'</p><p> int gAddLabel(char *<br>_name, int _size)</p><p> ^</p><p>Guino_library:204: error: 'int gAddLabel(char*, int)'<br>previously defined here</p><p> int gAddLabel(char *<br>_name, int _size)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddSpacer(int)':</p><p>Guino_libray:222: error: redefinition of 'int<br>gAddSpacer(int)'</p><p> int gAddSpacer(int _size)</p><p> ^</p><p>Guino_library:222: error: 'int gAddSpacer(int)' previously<br>defined here</p><p> int gAddSpacer(int<br>_size)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddToggle(char*, int*)':</p><p>Guino_libray:237: error: redefinition of 'int<br>gAddToggle(char*, int*)'</p><p> int gAddToggle(char *<br>_name, int * _variable)</p><p> ^</p><p>Guino_library:237: error: 'int gAddToggle(char*, int*)'<br>previously defined here</p><p> int gAddToggle(char *<br>_name, int * _variable)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddFixedGraph(char*, int, int, int, int*, int)':</p><p>Guino_libray:258: error: redefinition of 'int<br>gAddFixedGraph(char*, int, int, int, int*, int)'</p><p> int<br>gAddFixedGraph(char * _name,int _min,int _max,int _bufferSize, int * _variable,<br>int _size)</p><p> ^</p><p>Guino_library:258: error: 'int gAddFixedGraph(char*, int,<br>int, int, int*, int)' previously defined here</p><p> int<br>gAddFixedGraph(char * _name,int _min,int _max,int _bufferSize, int * _variable,<br>int _size)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddMovingGraph(char*, int, int, int*, int)':</p><p>Guino_libray:278: error: redefinition of 'int<br>gAddMovingGraph(char*, int, int, int*, int)'</p><p> int<br>gAddMovingGraph(char * _name,int _min,int _max, int * _variable, int _size)</p><p> ^</p><p>Guino_library:278: error: 'int gAddMovingGraph(char*, int,<br>int, int*, int)' previously defined here</p><p> int<br>gAddMovingGraph(char * _name,int _min,int _max, int * _variable, int _size)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gUpdateLabel(int, char*)':</p><p>Guino_libray:300: error: redefinition of 'int<br>gUpdateLabel(int, char*)'</p><p> int gUpdateLabel(int<br>_item, char * _text)</p><p> ^</p><p>Guino_library:300: error: 'int gUpdateLabel(int, char*)'<br>previously defined here</p><p> int gUpdateLabel(int<br>_item, char * _text)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddRotarySlider(int, int, char*, int*)':</p><p>Guino_libray:314: error: redefinition of 'int<br>gAddRotarySlider(int, int, char*, int*)'</p><p> int gAddRotarySlider(int<br>_min,int _max, char * _name, int * _variable)</p><p> ^</p><p>Guino_library:314: error: 'int gAddRotarySlider(int, int,<br>char*, int*)' previously defined here</p><p> int<br>gAddRotarySlider(int _min,int _max, char * _name, int * _variable)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'int gAddSlider(int, int, char*, int*)':</p><p>Guino_libray:335: error: redefinition of 'int<br>gAddSlider(int, int, char*, int*)'</p><p> int gAddSlider(int<br>_min,int _max, char * _name, int * _variable)</p><p> ^</p><p>Guino_library:335: error: 'int gAddSlider(int, int, char*,<br>int*)' previously defined here</p><p> int gAddSlider(int<br>_min,int _max, char * _name, int * _variable)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gUpdateValue(int)':</p><p>Guino_libray:356: error: redefinition of 'void<br>gUpdateValue(int)'</p><p> void gUpdateValue(int<br>_item)</p><p> ^</p><p>Guino_library:356: error: 'void gUpdateValue(int)'<br>previously defined here</p><p> void gUpdateValue(int<br>_item)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gUpdateValue(int*)':</p><p>Guino_libray:363: error: redefinition of 'void gUpdateValue(int*)'</p><p> void gUpdateValue(int<br>* _variable)</p><p> ^</p><p>Guino_library:363: error: 'void gUpdateValue(int*)'<br>previously defined here</p><p> void gUpdateValue(int<br>* _variable)</p><p> ^</p><p>/Users/shuffey/Documents/Arduino/AdvancedTouchSensing-master/singingPlant/singingPlant/Guino_libray.ino:<br>In function 'void gSendCommand(byte, byte, int)':</p><p>Guino_libray:383: error: redefinition of 'void<br>gSendCommand(byte, byte, int)'</p><p> void<br>gSendCommand(byte _cmd, byte _item, int _value)</p><p> ^</p><p>Guino_library:383: error: 'void gSendCommand(byte, byte,<br>int)' previously defined here</p><p> void<br>gSendCommand(byte _cmd, byte _item, int _value)</p><p> ^</p><p>exit status 1</p><p>'prog_uchar' does not name a type</p><p>Invalid library found in<br>/Users/shuffey/Documents/Arduino/libraries/Guino:<br>/Users/shuffey/Documents/Arduino/libraries/Guino</p><p> This report would<br>have more information with</p><p> &quot;Show verbose<br>output during compilation&quot;</p><p> enabled in File &gt;<br>Preferences.</p>
<p>Works like a charm!!! Thanks for the schematics!</p>
<p>Hello, I try to construct a device like this one, but instead of touching plant, I want to use the potential difference between the root and the leave. Can you help me to do that ? It will be inspired of the work of Damanhur.</p>
<p>Brilliant idea! I found out that to use the Touche shield on an Mega you need to change the pin from 9 to 11 in the code. I assume there is no need to bend any pins on the gameduino etc. that way. However: I am having serious problems compiling. I get the same errors using a Uno and a Mega. Can someone please help me here? I really want to build this and use it at a international flowershow (I am a rose grower) </p><p> With the old IDE 1.0.5 I get:</p><p>In file included from singingPlant.ino:5:0:</p><p>mont.h:1:32: error: variable &lsquo;mont&rsquo; must be const in order to be put into read-only section by means of &lsquo;__attribute__((progmem))&rsquo;</p><p> static PROGMEM prog_uchar mont[] = {</p><p> ^</p><p>When using the new IDE 1.6.3 I get this:</p><p>Arduino: 1.6.3 (Linux), Board:&quot;Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)&quot;</p><p>In file included from singingPlant.ino:3:0:</p><p>/home/peter/Arduino/libraries/Gameduino/GD.h:51:39: error: 'prog_uchar' has not been declared</p><p> static void copy(unsigned int addr, prog_uchar *src, int count);</p><p> ^</p><p>/home/peter/Arduino/libraries/Gameduino/GD.h:62:25: error: 'prog_uchar' has not been declared</p><p> static void microcode(prog_uchar *src, int count);</p><p> ^</p><p>/home/peter/Arduino/libraries/Gameduino/GD.h:63:45: error: 'prog_uchar' has not been declared</p><p> static void uncompress(unsigned int addr, prog_uchar *src);</p><p> ^</p><p>In file included from singingPlant.ino:5:0:</p><p>mont.h:1:16: error: 'prog_uchar' does not name a type</p><p> static PROGMEM prog_uchar mont[] = {</p><p> ^</p><p>singingPlant.ino:8:3: error: 'prog_uchar' does not name a type</p><p>singingPlant.ino: In function 'void setup()':</p><p>singingPlant.ino:82:4: error: 'pc' was not declared in this scope</p><p>singingPlant.ino:82:9: error: 'mont' was not declared in this scope</p><p>singingPlant.ino: In function 'void loop()':</p><p>singingPlant.ino:144:6: error: 'pc' was not declared in this scope</p><p>singingPlant.ino:144:12: error: 'mont' was not declared in this scope</p><p>In file included from /home/peter/opt/arduino-1.6.3/hardware/arduino/avr/cores/arduino/Arduino.h:28:0,</p><p> from /home/peter/opt/arduino-1.6.3/hardware/arduino/avr/libraries/SPI/SPI.h:17,</p><p> from singingPlant.ino:2:</p><p>singingPlant.ino:158:35: error: 'pc' was not declared in this scope</p><p>singingPlant.ino:171:39: error: 'pc' was not declared in this scope</p><p>singingPlant.ino:174:39: error: 'pc' was not declared in this scope</p><p>singingPlant.ino:179:40: error: 'pc' was not declared in this scope</p>
<p>Hi. Would a pre-assembled replacement for the homemade touche shield work? I was looking at the MPR121QR2 IC - https://www.sparkfun.com/products/12013</p>
<p>Brilliant for valentines night</p>
<p>Can someone help me out with this...I can't run the code these are errors I'm getting from the GUINO_library file:</p><p>Guino_library:65: error: 'EasyTransfer' does not name a type</p><p>Guino_library.ino: In function 'void guino_update()':</p><p>Guino_library:94: error: 'ET' was not declared in this scope</p><p>Guino_library.ino:105: warning: array subscript has type 'char'</p><p>Guino_library.ino: In function 'void gInitEEprom()':</p><p>Guino_library.ino:129: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'void gGetSavedValue(int, int*)':</p><p>Guino_library.ino:150: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'void gBegin(int)':</p><p>Guino_library:173: error: 'ET' was not declared in this scope</p><p>Guino_library:173: error: 'details' was not declared in this scope</p><p>Guino_library.ino: In function 'int gAddButton(char*)':</p><p>Guino_library.ino:185: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'int gAddLabel(char*, int)':</p><p>Guino_library.ino:211: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'int gAddToggle(char*, int*)':</p><p>Guino_library.ino:246: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'int gUpdateLabel(int, char*)':</p><p>Guino_library.ino:305: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino:311: warning: no return statement in function returning non-void</p><p>Guino_library.ino: In function 'int gAddRotarySlider(int, int, char*, int*)':</p><p>Guino_library.ino:324: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'int gAddSlider(int, int, char*, int*)':</p><p>Guino_library.ino:345: warning: comparison between signed and unsigned integer expressions</p><p>Guino_library.ino: In function 'void gSendCommand(byte, byte, int)':</p><p>Guino_library:391: error: 'ET' was not declared in this scope</p><p>thanks </p>
<p>Thats tremendous<br><br></p>
<p>Hi everyone! I was wondering if anyone could help me find out the issues with this code for this project ( <a href="http://www.instructables.com/id/Singing-plant-Make-your-plant-sing-with-Arduino-/?ALLSTEPS" rel="nofollow"> http://www.instructables.com/id/Singing-plant-Mak...</a> ) If someone could help me ASAP because this project is for a science fair next week. </p><p> Here is the error codes: </p><p> CODE: SELECT ALL singingPlant.ino: In function 'void visualize(byte, byte)': singingPlant:38: error: 'GD' was not declared in this scope singingPlant.ino: In function 'void setup()': singingPlant:55: error: 'GD' was not declared in this scope singingPlant:57: error: 'RAM_SPRPAL' was not declared in this scope singingPlant:57: error: 'TRANSPARENT' was not declared in this scope singingPlant:61: error: 'RGB' was not declared in this scope singingPlant:62: error: 'RAM_SPRIMG' was not declared in this scope singingPlant.ino: In function 'void setvol(byte, byte)': singingPlant:104: error: 'GD' was not declared in this scope singingPlant:104: error: 'VOICES' was not declared in this scope singingPlant.ino: In function 'void loop()': singingPlant:174: error: 'GD' was not declared in this scope singingPlant:174: error: 'VOICES' was not declared in this scope Guino_library.ino: At global scope: Guino_library:64: error: 'EasyTransfer' does not name a type Guino_library.ino: In function 'void guino_update()': Guino_library:93: error: 'ET' was not declared in this scope Guino_library.ino: In function 'void gBegin(int)': Guino_library:172: error: 'ET' was not declared in this scope Guino_library:172: error: 'details' was not declared in this scope Guino_library.ino: In function 'void gSendCommand(byte, byte, int)': Guino_library:390: error: 'ET' was not declared in this scope </p><p> Full code is here: <a href="https://www.dropbox.com/sh/rwbm17bxc19pvu4/XbPjnTq0r8" rel="nofollow"> https://www.dropbox.com/sh/rwbm17bxc19pvu4/XbPjnT...</a></p><p> Picture of arduino program + errors: <a href="https://drive.google.com/file/d/0B_R7DK3x9hmOUjRoMUMxVTdtRk0/edit?usp=sharing" rel="nofollow"> https://www.dropbox.com/sh/rwbm17bxc19pvu4/XbPjnT...</a> </p><p> Any advice or help is greatly appreciated as this is very important :D</p>
i do not have sound after uploading singingPlant.ino.
Hi! <br>I really want to try out this but I am having difficulties. <br>I got stuck too..the same here, I followed all the steps. <br>the touche shield works perfectly, when I open Guino, I see the graphs.. but I can only hear white noises in my headphones.. <br>It is necessary to have 100% same setup? same model arduino ,compiler, version and operating system? <br>Should be any difference if I am working with a macOsx and arduino UNO and arduino1.5.2.. <br>Can you guys send me the binary? the compiled code that loaded into the mic? <br>It would be great if you could help me. Thank you!
hope you guys can help me out here. I got stucked ... The touche shield works perfectly. I just can't make any proper sounds with the gameduino. Hear only white noises with my headphones. I did everything what the instruction told me to do. Except of mounting those two buttons on the shield. Also the Guino is not really a help for me. I tried every adjustments on that GUI. But nothing seems to create sounds. There are also no mistakes when uploading the code &quot;matrixpatterns&quot; on to the Arduino. The soldering of the singing plant construction is also fine. What can it be that it doesn't make any sounds? Please help me! Thank you for your help!
I am terribly sorry - but must have made a mistake with a resent update. You are using the code for the matrix synth not the arduino. The link is wrong. Use this one instead: <br> <br>https://www.dropbox.com/sh/rwbm17bxc19pvu4/XbPjnTq0r8 <br> <br>Remember to update your gameduino library with the one attached since it uses a different pin. <br> <br>Thanks for pointing this out. I am updating the text now.
i do not have sound after uploading singingPlant.ino. <br>i soldered all ok. gameduino examples all works, i hear sound through headphones. <br>when i open guino, i see graph. it changes as i touch wire i put in water. <br>what am i missing? <br>many thanx in advance <br>
I am very much a newbie to the world of Arduino but I am incredibly inspired by this project. I know that your main interest is in how sound can be interacted with differently but do you think that it would be relatively easy to have a visual response from touching the plant rather than sounds? <br> <br>Thank you very much for putting this project up.
well, did it work as shown? <br>I'm thinking about doing it as a final project to an university course. <br>Do you have something else to tell me about this project? <br>I'm really surprised that the project worked so well, and can't believe that it's real, haha. <br>Is there any magic tricks? thanks a lot
I am stumped. What is a &quot;Pin Stripe&quot;?
Pin Headers ;) Fixed...
Pin headers ;) Fixed...
very nice i made it yesturday
Where you say &quot;Download the code from here.&quot; what is the name of the code file(s). I see several directories (folders) there, but which one is the required code. <br> <br>I love the music your machine generates and you have made it so simple.
You need to download everything form the link.
Thank you so much for adding all the instructables about making a Touche device! I was literally just scouring through the paper and trying to figure out how to build one myself, and then thought, well I might as well check instructables one more time! <br>
Thank you so much for adding all the instructables about making a Touche device! I was literally just scouring through the paper and trying to figure out how to build one myself, and then thought, well I might as well check instructables one more time! <br>
I immediately thought of The Three Amigos.
Hi I have tried making my very own singing plant, inspired by Botanicus Interacticus - Touche' technology by Disney. I am using the arduino and mp3 shield to create a capacitive sensor and playback sound. The readings are stable in the beginning but after a while / with too much touching the circuit starts giving problem with the voice feedback. Will your elaborate circuit that you developed for the same help me with my problem. My experiment can be found here http://www.youtube.com/watch?v=s2kd-uDgis8&amp;feature=youtu.be
i love this! <br>i'm a director and nt really that handy with arduino and what not, but i've always been inspired by this type of stuff. <br>i just finished a music video, that was inspired by the secret life of plants among many other obscure sciences. i can easily say that if i would have seen this, it would have inspired me to a similar thing. <br>here's the video if you 'd like to see it: <br>http://www.youtube.com/watch?v=yqN6BmI1BIk <br> <br>great instructable!! <br>thanks
this is so cool, I really hope I get the time to try out this touche system and the gameduino!<br /> here's a solution for drilling square holes, would be awesome to get a bit like this that is usb sized:<br /> http://www.youtube.com/watch?v=L5AzbDJ7KYI

About This Instructable

93,065 views

223 favorites

License:

Bio: IMPORTANT: Please do not message me personally with technical questions. Use the comments in the respective instructables. I really love sharing and helping people makes ... More »
More by madshobye: Guino: Dashboard for your Arduino Making noise machines Making sound (noise) machines
Add instructable to: