{"id":3020,"date":"2021-01-19T17:46:10","date_gmt":"2021-01-19T17:46:10","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=3020"},"modified":"2021-01-19T17:46:11","modified_gmt":"2021-01-19T17:46:11","slug":"proyecto-teclado-musical","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/","title":{"rendered":"TECLADO MUSICAL CON ARDUINO"},"content":{"rendered":"\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>MIEMBROS DEL GRUPO<\/strong><\/h1>\n\n\n\n<ul class=\"wp-block-list\"><li>RAFAEL CASTILLO MU\u00d1OZ<\/li><li>YAGO NAVARRETE MART\u00cdNEZ<\/li><li>ALEJANDRO OREJUDO FRAILE<\/li><\/ul>\n\n\n\n<p>Memoria del proyecto: <a href=\"https:\/\/drive.google.com\/file\/d\/11tYAj70_MnBSN8GRIZ7tetQalvNR9PHA\/view?usp=sharing\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/drive.google.com\/file\/d\/11tYAj70_MnBSN8GRIZ7tetQalvNR9PHA\/view?usp=sharing<\/a><\/p>\n\n\n\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>IDEA GENERAL<\/strong><\/h1>\n\n\n\n<p>El proyecto dise\u00f1ado en Arduino para la asignatura de Dise\u00f1o de Sistemas Empotrados tiene como nombre \u201cTeclado musical\u201d. Como su propio nombre indica, se trata de un peque\u00f1o teclado implementado en Arduino, mediante el cual se pueden tocar piezas musicales.<\/p>\n\n\n\n<p>Inicialmente el proyecto iba a ser un teclado interactivo dise\u00f1ado para aprender a tocar canciones. El teclado reproducir\u00eda una canci\u00f3n aleatoria, que el usuario deber\u00eda repetir satisfactoriamente mediante una serie de botones. La idea fue descartada posteriormente, implementando en su lugar diversas funcionalidades adicionales al teclado para compensar. Se mantuvo el concepto base de reproducir distintas notas mediante pulsadores, esencia de cualquier teclado, pero se incorporaron un sistema para cambiar la escala, la opci\u00f3n de poder grabar y reproducir una secuencia de notas elegidas por el usuario y un sistema que modifica la velocidad de reproducci\u00f3n en funci\u00f3n de la luz ambiente.<\/p>\n\n\n\n<p>El proyecto es por lo tanto un teclado divertido, sencillo y f\u00e1cil de usar, que permite a cualquier usuario pasar un buen rato sin tener conocimientos musicales previos. El objetivo buscado era que resultase intuitivo, siendo un teclado musical accesible a todos los p\u00fablicos.<\/p>\n\n\n\n<p>El proyecto es por lo tanto un teclado divertido, sencillo y f\u00e1cil de usar, que permite a cualquier usuario pasar un buen rato sin tener conocimientos musicales previos. El objetivo buscado era que resultase intuitivo, siendo un teclado musical accesible a todos los p\u00fablicos.<\/p>\n\n\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"185\" src=\"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\"><\/p>\n\n\n\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>HARDWARE<\/strong><\/h1>\n\n\n\n<p>El hardware empleado para el desarrollo del proyecto es muy b\u00e1sico. Se han usado una placa Arduino UNO R3, una protoboard, 9 botones (7 para el teclado y 2 para funcionalidades extra), un zumbador peque\u00f1o, un led, dos resistencias de 220 y 1k ohmios respectivamente, una fotorresistencia, un potenci\u00f3metro de 1k ohmios y varios cables jumpers para realizar las interconexiones.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh6.googleusercontent.com\/HjYh8W0mroenjjcAszLtbgWjbXSHr8tY1c-kvZUe0LUK8fs4PMPiUFL72wMRFRpoCQ3a6KrM2Nj0lABWgqUkUr2j6T3tM28PiqfLHwlg-y9NVWVmp3ABZqYovyDk9SiWhQmUrTS8\" alt=\"\" \/><\/figure>\n\n\n\n<p>En primer lugar, para la implementaci\u00f3n del piano se han conectado<strong> siete botones<\/strong> distintos a diferentes pines digitales, desde el pin 8 al pin 2 (Se han dejado libres el pin 0 y 1 para permitir depurar el c\u00f3digo usando el puerto serie). Cada uno de estos env\u00eda una se\u00f1al el\u00e9ctrica al Arduino al ser pulsados, que lee dicho input y transforma cada se\u00f1al en una nota concreta distinta. Para ello env\u00eda una se\u00f1al output al <strong>zumbador<\/strong>, que vibra en una frecuencia y escala determinada por el valor de la se\u00f1al de salida que recibe.\u00a0 Se han conectado mediante resistencias pullup internas del chip Atmega de la placa Arduino tanto por falta de resistencias adecuadas como para facilitar el uso de los botones al no introducir cableado por la parte delantera.<\/p>\n\n\n\n<p>En segundo lugar, se ha conectado el<strong> zumbador<\/strong> a la placa. El lado positivo se ha conectado al pin digital 11 y el lado negativo a tierra. Ser\u00e1 este pin el encargado de enviar las se\u00f1ales con las distintas frecuencias para hacer vibrar el <strong>zumbador<\/strong>.<\/p>\n\n\n\n<p>En tercer lugar, se ha incorporado un controlador de escala. Se trata de un <strong>potenci\u00f3metro<\/strong> conectado al pin anal\u00f3gico 0 del Arduino. Los valores anal\u00f3gicos, a diferencia de los digitales, se caracterizan por poseer un rango de valores y no solo dos estados. Es gracias a ello que el input obtenido mediante el <strong>potenci\u00f3metro <\/strong>permite la modificaci\u00f3n de las notas reproducidas a diferentes escalas. Se han implementado 4 escalas distintas, pero esto es f\u00e1cilmente modificable (ver software).<\/p>\n\n\n\n<p>En cuarto lugar, se controla una peque\u00f1a funci\u00f3n de grabaci\u00f3n incorporada por medio de <strong>dos botones<\/strong>. El primero de ellos, conectado al pin 9, reproduce la \u00faltima melod\u00eda guardada al ser pulsado, mientras que el segundo, conectado al pin 12, permite grabar una melod\u00eda de hasta 30 segundos, registrando las notas correspondientes a los <strong>botones <\/strong>pulsados.<\/p>\n\n\n\n<p>El bot\u00f3n de grabar, activa la grabadora implementada en el sistema, y enciende un <strong>LED<\/strong>, conectado al pin 13, que indica que se est\u00e1 llevando a cabo correctamente y permite apreciar cuando el Arduino est\u00e1 registrando las pulsaciones del teclado. Tras eso, se guardar\u00e1n los inputs de las teclas pulsadas durante 30 segundos o hasta que se pulse de nuevo el <strong>bot\u00f3n<\/strong> de grabar.\u00a0<\/p>\n\n\n\n<p>Cuando el Arduino detecta una pulsaci\u00f3n en el<strong> bot\u00f3n<\/strong> de reproducir la melod\u00eda guardada, este accede a su memoria <strong>EEPROM<\/strong>, lee las frecuencias almacenadas y las env\u00eda autom\u00e1ticamente al <strong>zumbador<\/strong> para que reproduzca las notas correspondientes, de forma similar a si se estuviese pulsando los <strong>botones<\/strong> del teclado.<\/p>\n\n\n\n<p>Por \u00faltimo, nuestro proyecto incorpora tambi\u00e9n un <strong>LDR<\/strong>, que env\u00eda otra se\u00f1al anal\u00f3gica al Arduino en funci\u00f3n de la luz ambiente. Dicha se\u00f1al es usada para establecer el tiempo de reproducci\u00f3n de cada nota (y silencio) al reproducir la canci\u00f3n grabada. El rango establecido est\u00e1 entre 100 ms y 1 segundo por nota. Cuanto mayor es la cantidad de luz que recibe la <strong>fotorresistencia<\/strong>, menor es el tiempo de cada nota.<\/p>\n\n\n\n<figure class=\"wp-block-image is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/9d2MpQQSYznutTCXsfM5M8s2gb8aXDBLvCcaaMyznsJu4mSWxgu1H2a9suyc30HzwApF8TNJ04kEBQBgdlXcO2kuhOmrEKN40LC9C9WW4mCsdQmkWA_mlE7_VTWwl7t48yEgHz_f\" alt=\"\" width=\"1511\" height=\"1024\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Listado de materiales<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center\"><strong><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"693\" src=\"https:\/\/lh4.googleusercontent.com\/bbytd4qjhL6iFMEvGfKM-uaIycCbOvheJlzRzJDVZbPC7nM8wCEuEhuE8I0eHXFs6JJjmexThz8RU8y1GhXdxsTKFXq9IrMS367AGd1e30BVhCpbkRjfrOvdp8_7moEF5MxLyMk9\"><\/strong><\/p>\n\n\n\n<h2 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>SOFTWARE<\/strong><\/h2>\n\n\n\n<p>En segundo lugar, se va a explicar el software implementado para el proyecto. Lo primero que se prepar\u00f3 fue una serie de <strong>constantes<\/strong> usadas para cada una de las notas que se pueden tocar con cada tecla (con cada pulsador). Cada nota se identifica seg\u00fan su frecuencia, y para cada nota se almacenan cuatro valores en un array, que son su frecuencia en diferentes escalas. Tambi\u00e9n se implementa el m\u00e1ximo de escalas, as\u00ed como la duraci\u00f3n base y los valores m\u00e1ximos y m\u00ednimos de duraci\u00f3n usada para el control con LDR.<\/p>\n\n\n\n<p>Tras eso, se preparan todos los <strong>componentes hardware<\/strong> que se usar\u00e1n, asignando cada uno de ellos a un pin digital o anal\u00f3gico. BUZZER reproduce los sonidos, RECORDER activa o desactiva la grabaci\u00f3n, PLAYER activa la reproducci\u00f3n, LED controla el led que indica que se est\u00e1 grabando, PIANO es cada una de las teclas, y posteriormente se preparan el potenci\u00f3metro y LDR para cada pin anal\u00f3gico.<\/p>\n\n\n\n<p>Entonces, se inicializan ciertos valores a utilizar posteriormente. Al comienzo del c\u00f3digo se incluye la <strong>librer\u00eda EEPROM<\/strong>, utilizada para controlar la memoria interna del sistema Arduino. Esta librer\u00eda posee ciertos m\u00e9todos usados principalmente para almacenar en memoria una serie de variables o estructuras que se almacenan incluso entre reinicios del sistema. Para usarla, se declara la variable mem_pointer. <\/p>\n\n\n\n<p>Se almacena el tiempo de reproducci\u00f3n de cada nota y los diferentes modos en los que puede estar el sistema: piano, grabaci\u00f3n o reproducci\u00f3n. Los valores recorder_prev y recorder_curr se utilizan para controlar el sistema de grabaci\u00f3n, ya que la grabaci\u00f3n almacena hasta un m\u00e1ximo de 30 segundos, pero se puede detener antes si as\u00ed se desea.<\/p>\n\n\n\n<p>A continuaci\u00f3n en el <strong>Setup() <\/strong>se declara cada pin como entrada o salida respectivamente. Se ha usado el t\u00e9rmino INPUT_PULLUP debido a que la placa protoboard que se ha utilizado posee resistencias internas pull-up, y por tanto los valores de entrada y salida LOW y HIGH se invierten, y los comandos cambian.&nbsp;<\/p>\n\n\n\n<p>As\u00ed, comienza el bucle principal del programa <strong>Loop()<\/strong>, el cual est\u00e1 compuesto por un simple conjunto de l\u00edneas de c\u00f3digo. Se han preparado muchos m\u00e9todos usados en ese bucle que se explicar\u00e1n a continuaci\u00f3n.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>SetSpeed<\/strong>: se encarga de analizar la luz ambiente por medio del LDR, obteniendo una se\u00f1al que posteriormente se mapea y se guarda en la variable note_delay usando map. Este m\u00e9todo controlar\u00e1 la duraci\u00f3n de las notas dependiendo de la luz ambiente, y dicha duraci\u00f3n solo se ver\u00e1 reflejada a la hora de reproducir una canci\u00f3n grabada.<br><\/li><li><strong>SetScale<\/strong>: utiliza el potenci\u00f3metro de manera similar al LDR. De ambos dos m\u00e9todos se toman sus entradas por los pines anal\u00f3gicos, raz\u00f3n por la cual se usa analogRead(). En el caso de SetScale, la funci\u00f3n se utiliza para controlar en qu\u00e9 escala se encuentran las notas que se van a reproducir al usar el piano. Dicha escala es independiente de la reproducci\u00f3n.&nbsp; Las notas almacenadas durante la grabaci\u00f3n no variar\u00e1n seg\u00fan el potenci\u00f3metro, sino que siempre sonar\u00e1n conforme se hayan grabado.<br><\/li><li><strong>Piano<\/strong>: en el caso de que se lea que cualquier tecla, es decir, un pulsador, ha sido accionado, se reproduce en el buzzer una nota musical que depende la tecla tocada, reproduciendo una nota u otra, as\u00ed como de la escala seleccionada por medio del potenci\u00f3metro. La reproducci\u00f3n de la nota dura tanto como el tiempo que est\u00e9s pulsando.<br><br>Tras eso, dentro de este m\u00e9todo se comprueba si se ha pulsado el bot\u00f3n de grabar para la pr\u00f3xima iteraci\u00f3n del bucle loop() principal. La comprobaci\u00f3n se hace por medio de recorder_curr y recorder_prev. Esto se ha implementado de esta manera por si se deja pulsado el bot\u00f3n y empieza a cambiar de modo constantemente. As\u00ed solo cambia en el instante en el que se pulsa, ya que, si se est\u00e1 grabando y se vuelve a pulsar el bot\u00f3n, se deja de grabar.<br><br>Tras esto simplemente se comprueba si el bot\u00f3n de reproducir se ha activado, en cuyo caso se declara mode como 2 para que loop en la siguiente iteraci\u00f3n entre en player, es decir, en reproducci\u00f3n.<br><\/li><li><strong>Grabaci\u00f3n<\/strong>: en primer lugar, se enciende el led preparado en el pin 13. La memoria no puede grabar m\u00e1s de una canci\u00f3n a la vez, debido a su limitado espacio, por lo que, si se guarda una nueva, escribi\u00e9ndose en memoria, la anterior es eliminada.&nbsp;<br><br>Usando comandos de la librer\u00eda EEPROM, en este caso put, se almacenar\u00e1 la nota pulsada en el punto de memoria indicado por el puntero mem_pointer. Si se pulsan varias notas a la vez, se guardar\u00e1 la de mayor frecuencia. De nuevo se examina por medio de recoder_curr el modo en el que se encuentra el sistema. En el caso de que se detecte que se ha pulsado de nuevo el bot\u00f3n de grabaci\u00f3n, se dejar\u00e1 de grabar, pero tambi\u00e9n se dejar\u00e1 de grabar si se ha llegado al punto m\u00e1ximo de memoria especificado. Cuando ya no se va a grabar, se apaga el led.<br><\/li><li><strong>Player<\/strong>: reproduce la canci\u00f3n almacenada en memoria anteriormente. Usar\u00e1 la variable auxiliar top_pointer para recorrer la memoria junto a mem_pointer, y conseguir\u00e1 las notas almacenadas con EEPROM.put(). El valor de la duraci\u00f3n de las notas se comprueba constantemente tras reproducir cada nota, para tener en cuenta si la luz ambiente var\u00eda y por tanto deben variar la duraci\u00f3n de cada nota. Cuando se reproducen todas las notas, se pasa a modo piano. Adem\u00e1s, noTone se utiliza para cuando el valor le\u00eddo es 0, es decir que en ese momento no se ha tocado ninguna nota.<\/li><\/ul>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>C\u00f3digo fuente<\/strong><\/h2>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">#include &lt;EEPROM.h&gt;\n\nconst float DO[] = {130.81, 261.63, 523.25, 1046.50};\nconst float RE[] = {146.83, 293.66, 587.33, 1174.66};\nconst float MI[] = {164.81, 329.63, 659.25, 1318.51};\nconst float FA[] = {174.61, 349.23, 698.46, 1396.91};\nconst float SOL[] = {196.00, 392.00, 783.99, 1567.98};\nconst float LA[] = {220.00, 440.00, 880.00, 1760.00};\nconst float SI[] = {246.94, 493.88, 987.77, 1975.53};\n\nconst int total_scales = 4;\nconst int min_delay = 50;\nconst int max_delay = 400;\nconst int max_time = 30;\nint t = 50;\n\nint BUZZER = 11;   \nint RECORDER = 12;\nint PLAYER = 9;\nint LED = 13;\nint PIANO[] = {8,7,6,5,4,3,2};\nint POTENTIOMETER = A0;\nint LDR = A1;\n\nint mem_pointer = 0;\n\nint scale = 0;          \/\/ Escala (0-3)\nint note_delay = 1;     \/\/ Tiempo de reproducci\u00f3n de cada nota (ms).\nint mode = 0;           \/\/ Modo (0 - Piano, 1 - Grabar, 2 - Reproducir)\n\nint recorder_prev;\nint recorder_curr;\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ SET UP \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n  void setup()\n  {\n    pinMode(13, OUTPUT);\n    \n    Serial.begin(9600);\n    pinMode(RECORDER, INPUT_PULLUP);\n    pinMode(PLAYER, INPUT_PULLUP);\n    for(int i = 0; i &lt; 7;i++)\n    {\n      pinMode(PIANO[i], INPUT_PULLUP);\n    }\n    \n    recorder_prev = 0;\n    recorder_curr = 0;\n  }\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ LOOP \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid loop()\n{\n  SetSpeed();\n  SetScale();\n  switch(mode){\n    case 0:\n      piano();\n    break;\n    case 1:\n      record();\n    break;\n    case 2:\n      play();\n    break;\n    default:\n    break;\n  }\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ METODOS \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/ PIANO \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid piano(){\n\n\n  \/\/  REPRODUCIR NOTAS:\n  while(digitalRead(PIANO[0]) == LOW)\n  {\n    tone(BUZZER, DO[scale], t);\n  }\n  while(digitalRead(PIANO[1]) == LOW)\n  {\n    tone(BUZZER, RE[scale], t);\n  }\n  while(digitalRead(PIANO[2]) == LOW)\n  {\n    tone(BUZZER, MI[scale], t);\n  }\n  while(digitalRead(PIANO[3]) == LOW)\n  {\n    tone(BUZZER, FA[scale], t);\n  }\n  while(digitalRead(PIANO[4]) == LOW)\n  {\n    tone(BUZZER, SOL[scale], t);\n  }\n  while(digitalRead(PIANO[5]) == LOW)\n  {\n    tone(BUZZER, LA[scale], t);\n  }\n  while(digitalRead(PIANO[6]) == LOW)\n  {\n    tone(BUZZER, SI[scale], t);\n  } \n  \n  \/\/  COMPROBAR BOT\u00d3N DE GRABAR  \n  if(digitalRead(RECORDER) == LOW){\n    recorder_curr = 1;\n  } else{\n    recorder_curr = 0;\n  }\n  \n  if(recorder_curr == 1 &amp;&amp; recorder_prev == 0){\n    mode = 1;    \n  }\n  recorder_prev = recorder_curr;\n\n  \/\/  COMPROBAR BOT\u00d3N DE REPRODUCIR:\n  if(digitalRead(PLAYER) == LOW){\n    mode = 2;\n  }\n     \n  \/\/  DELAY:   \n  delay(t);  \n}\n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/ GRABADORA \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid record(){\n\n    \/\/  ENCIENDE EL LED \n    digitalWrite(13, HIGH);\n    mem_pointer = 0;\n    t = 250;\n  \n    while(mode == 1){\n    \n      float note = 0.0f;\n        \n      if(digitalRead(PIANO[0]) == LOW)\n      {\n        tone(BUZZER, DO[scale], t);\n        note = DO[scale];      \n      }\n      if(digitalRead(PIANO[1]) == LOW)\n      {\n        tone(BUZZER, RE[scale], t);\n        note = RE[scale]; \n      }\n      if(digitalRead(PIANO[2]) == LOW)\n      {\n        tone(BUZZER, MI[scale], t);\n        note = MI[scale]; \n      } \n      if(digitalRead(PIANO[3]) == LOW)\n      {\n        tone(BUZZER, FA[scale], t);\n        note = FA[scale]; \n      }\n      if(digitalRead(PIANO[4]) == LOW)\n      {\n          tone(BUZZER, SOL[scale], t);\n        note = SOL[scale]; \n      }\n      if(digitalRead(PIANO[5]) == LOW)\n      {\n       tone(BUZZER, LA[scale], t);\n        note = LA[scale]; \n      }\n      if(digitalRead(PIANO[6]) == LOW)\n      {\n       tone(BUZZER, SI[scale], t);\n        note = SI[scale];\n      }\n      \n      \/\/ Escribir en memoria EEPROM la frecuencia de la nota pulsada (si se\n      \/\/ han pulsado varias se guardar\u00e1 la de mayor frecuencia: \n      EEPROM.put(mem_pointer, note);\n      mem_pointer += sizeof(float);\n  \n      \/\/ Cambiar a modo grabaci\u00f3n (solo en el instante en el que se pulsa, \n      \/\/ al volver a pulsar se acaba la grabaci\u00f3n).\n      if(digitalRead(RECORDER) == LOW){\n        recorder_curr = 1;\n      } else{\n        recorder_curr = 0;\n      }\n\n      \/\/ Se guarda una nota cada 250 ms (1\/4 segs), por lo que la capacidad \n      \/\/ m\u00e1xima de canci\u00f3n ser\u00e1 de 30 segundos (definido por max_time):\n      if(recorder_curr == 1 &amp;&amp; recorder_prev == 0 || \n      mem_pointer &gt; sizeof(float) * max_time * 4){\n        mode = 0;\n        EEPROM.put(mem_pointer, -1.0f);\n        mem_pointer += sizeof(float);\n      }\n  \n      recorder_prev = recorder_curr;\n        \n      delay(t);\n  }\n  \n  digitalWrite(13, LOW);\n  t = 50;\n}\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/ REPRODUCTOR \/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\nvoid play(){\n\n    float note = 0.0f;\n\n    mem_pointer = 0;\n    while(note &gt;= 0.0f){\n\n      \/\/ Reproduce la nota almacenada en memoria:\n      EEPROM.get(mem_pointer, note);\n      if(note == 0.0f){\n        noTone(BUZZER);\n      }else if (note &gt; 0.0f){\n        tone(BUZZER,note, note_delay);\n      }\n      delay(note_delay);\n  \n      \/\/ Pasa el puntero de memoria a la siguiente nota:\n      mem_pointer += sizeof(float);\n      \n      \/\/ El ritmo de la canci\u00f3n puede cambiar din\u00e1micamente con la luz que \n      \/\/ recibe el LDR:\n      SetSpeed(); \n    }\n\n  \/\/Al acabar la canci\u00f3n se pasa a modo piano (se deja un delay para evitar\n  \/\/ que se entre en la funci\u00f3n muchas veces si no hay canci\u00f3n grabada).\n  delay(1000);  \n  mode = 0;  \n}\n    \n\n\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\/\/\/\/\/\/ M\u00e9todos auxiliares: \/\/\/\/\/\/\/\n\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\n\n\/\/ -- Establece la escala mediante el potenci\u00f3metro:\nvoid SetScale(){\n    int n = analogRead(POTENTIOMETER);\n    scale = map(n, 0, 1024, 0, total_scales);\n}\n\n\/\/ -- Establece la velocidad de reproducci\u00f3n mediante el LDR:\nvoid SetSpeed(){\n   int n = analogRead(LDR);\n   note_delay = max_delay + min_delay - map(n, 0, 1024, min_delay, max_delay);\n}\n<\/pre>\n\n\n\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>CASOS DE USO<\/strong><\/h1>\n\n\n\n<p>Como ya se ha comentado con anterioridad, el punto fuerte del proyecto es su sencillez, que permite a cualquier usuario, est\u00e9 familiarizado o no con t\u00e9rminos musicales, pasarlo en grande. Se han a\u00f1adido al teclado multitud de funciones interactivas, que permiten a su due\u00f1o jugar con el producto durante horas, puesto que gracias a la elevada cantidad de posibilidades los resultados obtenidos son casi infinitos.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Piano<\/strong><\/h2>\n\n\n\n<p>En primer lugar, el sistema posee un total de siete botones. Cada uno de ellos reproduce una nota almacenada mediante un zumbador. Todo teclado que se precie debe tener teclas que reproduzcan sonidos cuando sean pulsadas, y nuestra innovadora implementaci\u00f3n no es menos. El control de este \u201cmodo libre\u201d es fluido e intuitivo. Si se mantiene pulsado un bot\u00f3n, la nota se reproduce hasta que se levanta el dedo del pulsador.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Cambio de escala<\/strong><\/h2>\n\n\n\n<p>Obviamente todo buen teclado musical trae tambi\u00e9n opciones algo m\u00e1s avanzadas para expertos en el \u00e1mbito. En el caso de nuestro dise\u00f1o, se ha implementado un controlador de escala que modifica la frecuencia de las notas en funci\u00f3n de cuanto gire la rueda de un potenci\u00f3metro el usuario. Esto permite tocar diversas canciones que requieran escalas espec\u00edficas, o sencillamente jugar un rato produciendo sonidos m\u00e1s agudos o graves a pesar de tocar siempre tu tecla favorita.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Grabadora<\/strong><\/h2>\n\n\n\n<p>Se ha incorporado al producto tambi\u00e9n una funci\u00f3n de grabadora, controlada mediante dos botones adicionales. Uno de ellos graba hasta 30 segundos de la melod\u00eda tocada por el usuario, mientras que el otro reproduce la \u00faltima melod\u00eda grabada. Esto permite al usuario grabar su canci\u00f3n favorita en memoria, pudiendo mantenerla guardada hasta que decida sobrescribirla volviendo a pulsar el bot\u00f3n de grabar. Para una mayor comodidad para el usuario, cuando se est\u00e1 grabando una melod\u00eda se enciende un indicador visual en forma de LED. Tambi\u00e9n se puede detener el proceso de grabaci\u00f3n cuando se desee, volviendo a pulsar el bot\u00f3n de grabar mientras el LED est\u00e1 encendido.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Velocidad de reproducci\u00f3n<\/strong><\/h2>\n\n\n\n<p>Se a\u00f1adi\u00f3 tambi\u00e9n un controlador de la velocidad de reproducci\u00f3n de la canci\u00f3n guardada en memoria. Gracias a estar conectado a un sensor lum\u00ednico, cuando el ambiente es oscuro la melod\u00eda se reproduce lentamente. Esta funcionalidad es ideal para un uso enfocado a la creaci\u00f3n de m\u00fasica terror\u00edfica, con la que crear una atm\u00f3sfera para morirse de miedo. Cuando la sala est\u00e1 iluminada, la melod\u00eda se reproduce a una velocidad normal, no entorpeciendo as\u00ed a los usuarios que la utilicen sin este fin.<\/p>\n\n\n\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>PROBLEMAS Y SOLUCIONES<\/strong><\/h1>\n\n\n\n<p>Resumen de los diversos problemas encontrados con cada una de las partes del proyecto, explicando detalladamente las soluciones encontradas a los mismos. Cabe destacar que la realizaci\u00f3n del proyecto se ha llevado a cabo de manera no presencial, imposibilitando la implementaci\u00f3n hardware de manera conjunta entre todos los miembros del grupo. Dicha tarea ha reca\u00eddo en manos de Alejandro Orejudo, responsable de la caja de Arduino otorgada por la universidad. El resto de trabajos se han realizado de manera conjunta entre los distintos miembros del grupo, incluida la log\u00edstica detr\u00e1s de la colocaci\u00f3n de cada componente hardware.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Hardware<\/strong><\/h2>\n\n\n\n<p>En cuanto al hardware el principal problema encontrado fue la tardanza en la entrega de los materiales por parte de las empresas de reparto a causa de las nevadas. A pesar de no requerir componentes muy espec\u00edficos para el proyecto, algunos elementos necesarios no se encontraban incorporados en la caja de Arduino proporcionada por la universidad. Se hab\u00eda avisado de la necesidad de encargar material adicional para la realizaci\u00f3n del proyecto, y aunque el encargo se realiz\u00f3 antes de navidades, los componentes no llegaron a tiempo. En su lugar se tuvo que pedir prestado material a compa\u00f1eros, as\u00ed como realizar la compra de este en tiendas f\u00edsicas. Por suerte se pudo solventar este problema a tiempo para la entrega.<\/p>\n\n\n\n<p>Se quiso utilizar en un primer acercamiento al proyecto el display de texto incorporado en la caja para mostrar el nombre de la canci\u00f3n que se estaba reproduciendo, cuando la idea del proyecto no era definitiva. Dicho componente tuvo que ser descartado, pues el n\u00famero de pines no era suficiente para conectarlo junto a los botones.<\/p>\n\n\n\n<p>En cuanto a problemas con los componentes, un par de botones dejaron de funcionar tras estar haciendo pruebas con ellos. El pin 10 no respond\u00eda de forma adecuada al bot\u00f3n de grabar. Esto se solucion\u00f3 usando el pin 12.<\/p>\n\n\n\n<p>Inicialmente se us\u00f3 un potenci\u00f3metro de 10k, pero era demasiado inc\u00f3modo y dif\u00edcil de manipular y costaba demasiado girarlo para cambiar la escala, hab\u00eda que dar demasiadas vueltas. Similar a esto, en un principio se us\u00f3 un zumbador m\u00e1s grande, pero los cables de cobre no se conectaban bien a la placa y fallaba al reproducir sonidos con frecuencias menores a 230.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Software<\/strong><\/h2>\n\n\n\n<p>En primer lugar, se desconoc\u00eda si la implementaci\u00f3n de una grabadora iba a ser posible. Se conoc\u00eda la posibilidad de guardar en memoria una cantidad limitada de datos, pero no c\u00f3mo iba a ser posible almacenar distintos valores de manera ordenada para el caso concreto de nuestro proyecto. Se solucion\u00f3 este problema mediante el uso de la librer\u00eda EEPROM, incorporada en Arduino para estos casos. Se trata de una memoria no vol\u00e1til, ideal para la funcionalidad de la grabadora del teclado.<\/p>\n\n\n\n<h2 class=\"has-light-green-cyan-background-color has-background wp-block-heading\"><strong>Casos de uso<\/strong><\/h2>\n\n\n\n<p>Se trat\u00f3 inicialmente de implementar un controlador de volumen. Esta idea se cambi\u00f3 por un sistema para modificar la escala de las notas finalmente, debido a la dif\u00edcil implementaci\u00f3n que planteaba, al no conocer si esto era posible en el zumbador del que se dispon\u00eda. No obstante, se reutilizaron el potenci\u00f3metro y las funciones de c\u00f3digo ya implementadas para a\u00f1adir una funci\u00f3n que permite modificar la escala.<\/p>\n\n\n\n<h1 class=\"has-pale-cyan-blue-background-color has-background wp-block-heading\"><strong>VIDEO DEMOSTRACI\u00d3N<\/strong><\/h1>\n\n\n\n<figure class=\"wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"V\u00eddeo Proyecto DSE Grupo 11 Casos de Uso\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/0D3770fK-VA?feature=oembed&#038;wmode=opaque\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><figcaption>Video explicaci\u00f3n del hardware, software, funcionamiento y casos de uso del teclado musical<\/figcaption><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>MIEMBROS DEL GRUPO RAFAEL CASTILLO MU\u00d1OZ YAGO NAVARRETE MART\u00cdNEZ ALEJANDRO OREJUDO FRAILE Memoria del proyecto: https:\/\/drive.google.com\/file\/d\/11tYAj70_MnBSN8GRIZ7tetQalvNR9PHA\/view?usp=sharing IDEA GENERAL El proyecto dise\u00f1ado en Arduino para la asignatura de Dise\u00f1o de Sistemas Empotrados tiene como nombre&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3020","post","type-post","status-publish","format-standard","hentry","category-proyectos"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Proyecto Teclado Musical - Proyectos con Arduino.<\/title>\n<meta name=\"description\" content=\"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Proyecto Teclado Musical - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2021-01-19T17:46:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-01-19T17:46:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\" \/>\n<meta name=\"author\" content=\"Administrador de la red\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Administrador de la red\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"TECLADO MUSICAL CON ARDUINO\",\"datePublished\":\"2021-01-19T17:46:10+00:00\",\"dateModified\":\"2021-01-19T17:46:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/\"},\"wordCount\":2890,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/\",\"name\":\"Proyecto Teclado Musical - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\",\"datePublished\":\"2021-01-19T17:46:10+00:00\",\"dateModified\":\"2021-01-19T17:46:11+00:00\",\"description\":\"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\",\"contentUrl\":\"https:\\\/\\\/lh4.googleusercontent.com\\\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/proyecto-teclado-musical\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TECLADO MUSICAL CON ARDUINO\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"name\":\"Proyectos con Arduino.\",\"description\":\"Blog de proyectos de Arduino de alumnos de la URJC\",\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\",\"name\":\"Universidad Rey Juan Carlos\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/logourjc-1.jpg\",\"width\":745,\"height\":288,\"caption\":\"Universidad Rey Juan Carlos\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\",\"name\":\"Administrador de la red\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g\",\"caption\":\"Administrador de la red\"},\"sameAs\":[\"https:\\\/\\\/blogs.etsii.urjc.es\"],\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/etsiiadmin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Proyecto Teclado Musical - Proyectos con Arduino.","description":"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/","og_locale":"es_ES","og_type":"article","og_title":"Proyecto Teclado Musical - Proyectos con Arduino.","og_description":"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2021-01-19T17:46:10+00:00","article_modified_time":"2021-01-19T17:46:11+00:00","og_image":[{"url":"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT","type":"","width":"","height":""}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"TECLADO MUSICAL CON ARDUINO","datePublished":"2021-01-19T17:46:10+00:00","dateModified":"2021-01-19T17:46:11+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/"},"wordCount":2890,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#primaryimage"},"thumbnailUrl":"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/","name":"Proyecto Teclado Musical - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#primaryimage"},"thumbnailUrl":"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT","datePublished":"2021-01-19T17:46:10+00:00","dateModified":"2021-01-19T17:46:11+00:00","description":"Proyecto realizado en Arduino con el objetivo de crear un teclado musical capaz de reproducir notas en diferentes escalas, grabar y reproducir.","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#primaryimage","url":"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT","contentUrl":"https:\/\/lh4.googleusercontent.com\/8IqZh6VsAOjOi74SxNTBjEpoDV74ioJbGJYziSciXIecMsk5wOvPO_1jbpQquqsQ5YjgxdVB9HzjXtznT1xpDjNxZDcCphxBl6rpSJAaxgjryx5oaNEjfdohTMODtC_8uhI_u9rT"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/proyecto-teclado-musical\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"TECLADO MUSICAL CON ARDUINO"}]},{"@type":"WebSite","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","name":"Proyectos con Arduino.","description":"Blog de proyectos de Arduino de alumnos de la URJC","publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization","name":"Universidad Rey Juan Carlos","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/logourjc-1.jpg","width":745,"height":288,"caption":"Universidad Rey Juan Carlos"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211","name":"Administrador de la red","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e8e366128f81a82735b0b00fe6d280414b4bad087e380fa9fee9694454b8a6fa?s=96&d=mm&r=g","caption":"Administrador de la red"},"sameAs":["https:\/\/blogs.etsii.urjc.es"],"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/etsiiadmin\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=3020"}],"version-history":[{"count":28,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3020\/revisions"}],"predecessor-version":[{"id":3055,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/3020\/revisions\/3055"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=3020"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=3020"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=3020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}