{"id":5111,"date":"2022-05-10T20:33:05","date_gmt":"2022-05-10T18:33:05","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=5111"},"modified":"2022-06-03T10:07:49","modified_gmt":"2022-06-03T08:07:49","slug":"piano-32-notas","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/","title":{"rendered":"Piano 32 notas"},"content":{"rendered":"\n<p>Autores: David Paredes G\u00f3mez<\/p>\n\n\n\n<p>               Ra\u00fal Rodr\u00edguez L\u00f3pez -Rey<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/MfhjfBq.jpg\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Introducci\u00f3n<\/h2>\n\n\n\n<p>El proyecto como su titulo indica, consiste en la realizaci\u00f3n de un piano con un Arduino Uno que permita tocar 32 notas. 16 agudas y 16 graves.<\/p>\n\n\n\n<p>Para cambiar entre escalas hay un potenciometro. Adem\u00e1s, cuenta con una tecla que al pulsarla hace de una especie de pedal para activar los sostenidos de las notas. Para diferenciar las escalas y las notas que estamos pulsando, hay un lcd 16&#215;2 que se encarga de decirnoslo<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Materiales y costes<\/h2>\n\n\n\n<p>Para llevar a cabo este proyecto hemos usado:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Placa Arduino Uno 27 \u20ac<\/li><li>Altavoz: De 8 \u03a9 que vale 2,5 \u20ac<\/li><li>9 botones de 1,5 \u20ac<\/li><li>2 potenciometros 1,6\u20ac cada uno<\/li><li>Pantalla lcd 16&#215;2 10 \u20ac<\/li><li>Madera<\/li><li>Cables 13,6\u20ac el manojo<\/li><li>Pistola de pegamento termofusible 16\u20ac<\/li><li>Resistencias 3,7 \u20ac<\/li><li>Protoplaca 12 \u20ac<\/li><\/ul>\n\n\n\n<p>Cabe destacar que la mayor\u00eda de componentes nos lo ha proporcionado la Universidad<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Implementaci\u00f3n <\/h2>\n\n\n\n<p>La implementaci\u00f3n esta hecha con madera para realizar la caja y las teclas.<\/p>\n\n\n\n<p>Se usar\u00e1n 9 teclas, las 7 primeras son la escala Do,Re,Mi,Fa,Sol,La,Si la 8 tecla ser\u00e1 el do sostenido ( por un tema de ahorrar espacio y poder hacer sonar el m\u00e1ximo numero de notas) y el 9 ser\u00e1 el que activara los sostenidos. Si hab\u00e9is estado atentos, esto har\u00e1 que la ultima nota sostenida , si&#8217;, ser\u00e1 la 7 tecla, por lo que la 7 y la 8 cuando se pulsa el pedal(tecla 9) se denominaran Do# y Re#<\/p>\n\n\n\n<p>Se pondr\u00e1 el panel lcd con sus respectivos pines, y usaremos el otro potenciometro para darle el valor al contraste.<\/p>\n\n\n\n<p>El altavoz se conecta con el lado positivo al Arduino y con el negativo a tierra.<\/p>\n\n\n\n<p>El potenciometro se conecta la pata central al Arduino y las otras al la salida 5v del Arduino y a tierra respectivamente.Esto har\u00e1 que dependiendo del valor del potenciometro, estar\u00e1 activa la escala aguda o la grave.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Circuito<\/h2>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/Ce8RbY4.png\" alt=\"\"\/><figcaption>Se disponen 9 botones con sus resistencias(las resistencias no son necesarias , las usamos porque son m\u00e1s peque\u00f1as que los cables m\u00e1s cortos que ten\u00edamos y as\u00ed quedaba m\u00e1s ordenado) en la protoplaca, un lado al Arduino y otro al positivo. Se pone el potenciometro con la pata central al Arduino y las otras dos a tierra y al positivo respectivamente. Y para acabar con la parte del sonido, se pone el altavoz, se protege con una resistencia si no se quiere que suene tal alto, aunque para la presentaci\u00f3n es mejor quitarla.<\/figcaption><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/QxLhBIE.png\" alt=\"\" width=\"720\" height=\"351\"\/><figcaption>Parte de los botones y del potenciometro para que se vea mejor<\/figcaption><\/figure>\n\n\n\n<p>Por ultimo, tenemos el lcd 16&#215;2, se conectan sus puertos correspondientes a tierra y al positivo, el v0 a un potenciometro para controlar el contraste y por ultimo d4-d7, junto con RS y E al Arduino. Estos \u00faltimos ser\u00e1 la manera de pasar los datos a la pantalla.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/i.imgur.com\/65jU7r7.png\" alt=\"\"\/><figcaption>Parte del lcd y altavoz<\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<p>Antes de pasar a explicar el c\u00f3digo, vamos a explicar lo b\u00e1sico para entender como funciona el micro-chip ATMEGA 328 (para mas informaci\u00f3n mirar su datasheet). Dejo por aqu\u00ed el video de donde hemos sacado las im\u00e1genes y de donde aprendimos todo esto sobre el  micro-chip: <a href=\"https:\/\/www.youtube.com\/watch?v=Hzhaoz2j3lA\">https:\/\/www.youtube.com\/watch?v=Hzhaoz2j3lA<\/a><\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-imgur wp-block-embed-imgur\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"imgur-embed-pub\" lang=\"en\" data-id=\"pk1Rozj\"><a href=\"https:\/\/imgur.com\/pk1Rozj\">View post on imgur.com<\/a><\/blockquote><script async src=\"\/\/s.imgur.com\/min\/embed.js\" charset=\"utf-8\"><\/script>\n<\/div><\/figure>\n\n\n\n<p>La imagen que encontramos arriba es una foto del ARDUINO UNO que utiliza un micro-chip ATMEGA328. Los puertos que est\u00e1n pintados en rojo son los puertos que utilizamos normalmente con ARDUINO y en los que pone PORT C,D y B son del micro-chip ATMEGA328, a los que podemos acceder directamente.<\/p>\n\n\n\n<p>Como ARDUINO es secuencial, no tiene programaci\u00f3n concurrente, a la hora de hacer un piano y tocar varias notas a la vez, es imposible que estas se ejecuten simult\u00e1neamente , siempre se van a ejecutar despu\u00e9s de una nota que haya sonado antes, por lo tanto, para enga\u00f1ar al o\u00eddo humano y que parezca que varias notas suenan a la vez lo primero que necesitamos es la mayor velocidad posible a la hora de ejecutar instrucciones y accediendo a los registros del micro-chip conseguimos esta velocidad ya que no tiene que estar ejecutando cada vez que entre en el LOOP funciones como digitalRead() o digitalWrite(). <\/p>\n\n\n\n<p>El micro-chip tiene 3 partes diferenciables, cada uno con sus registros importantes, pero aqu\u00ed solo vamos a ver los registros DDRX, PORTX y PINX.<\/p>\n\n\n\n<p>DDRX: Es un registro de 8 bits que sirve para establecer el pueto como INPUT u OUPUT, dependiendo de si pones en el valor del registro un 0 o un 1.<\/p>\n\n\n\n<p>PORTX: Es un registro de 8 bits que sirve para establecer el valor del puerto en HIGH o LOW, dependiendo de si tiene un 0 o un 1 en valor del registro.<\/p>\n\n\n\n<p>PINX: Es un registro de 8 bits que guarda el valor de entrada de cada PIN para cada puerto, es decir, podemos comprobar las se\u00f1ales de HIGH y LOW en el momento con este registro.<\/p>\n\n\n\n<p>Vamos a ver un ejemplo con DDRX: <\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-imgur wp-block-embed-imgur\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"imgur-embed-pub\" lang=\"en\" data-id=\"BHMeMk8\"><a href=\"https:\/\/imgur.com\/BHMeMk8\">View post on imgur.com<\/a><\/blockquote><script async src=\"\/\/s.imgur.com\/min\/embed.js\" charset=\"utf-8\"><\/script>\n<\/div><figcaption>La B que aparece en DDRB es porque pertenece al puerto B que abarca en el ARDUINO UNO de los puertos 8 al 13<\/figcaption><\/figure>\n\n\n\n<p>Aqu\u00ed tenemos un registro de 8 bits en el que el pen\u00faltimo bit esta puesto en 1 por lo que ese puerto esta establecido como OUTPUT y los dem\u00e1s al tener un 0 como INPUT, y la forma en la que se especifica en c\u00f3digo es la que se muestra en la imagen.<\/p>\n\n\n\n<p>Veamos ahora un ejemplo de PORTX:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-rich is-provider-imgur wp-block-embed-imgur\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"imgur-embed-pub\" lang=\"en\" data-id=\"tU9vcR4\"><a href=\"https:\/\/imgur.com\/tU9vcR4\">View post on imgur.com<\/a><\/blockquote><script async src=\"\/\/s.imgur.com\/min\/embed.js\" charset=\"utf-8\"><\/script>\n<\/div><figcaption>Al igual que antes la B que aparece en PORTB es porque pertenece al puerto B.<\/figcaption><\/figure>\n\n\n\n<p>Tenemos de nuevo un registro de 8 bits en el que todos los valores est\u00e1n con un 0 indicando que ese valor es LOW excepto el pen\u00faltimo que tiene un 1 indicando que es HIGH, la forma que se indica en el c\u00f3digo es como se muestra en la imagen. Ej: <\/p>\n\n\n\n<p>void loop(){<\/p>\n\n\n\n<p>     PORTB:B00000010;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>El PINX no ponemos ejemplo porque se utiliza en el c\u00f3digo y se entiende perfectamente.<\/p>\n\n\n\n<p>A continuaci\u00f3n les dejamos el c\u00f3digo que hemos usado:<\/p>\n\n\n\n<p>\/\/ALGUNAS NOTAS DE PITCHES.H<\/p>\n\n\n\n<p>#define NOTE_B0 31<\/p>\n\n\n\n<p>#define NOTE_C1 33<\/p>\n\n\n\n<p>#define NOTE_CS1 35<\/p>\n\n\n\n<p>#define NOTE_D1 37<\/p>\n\n\n\n<p>#define NOTE_DS1 39<\/p>\n\n\n\n<p>#define NOTE_E1 41<\/p>\n\n\n\n<p>#define NOTE_F1 44<\/p>\n\n\n\n<p>#define NOTE_FS1 46<\/p>\n\n\n\n<p>#define NOTE_G1 49<\/p>\n\n\n\n<p>#define NOTE_GS1 52<\/p>\n\n\n\n<p>#define NOTE_A1 55<\/p>\n\n\n\n<p>#define NOTE_AS1 58<\/p>\n\n\n\n<p>#define NOTE_B1 62<\/p>\n\n\n\n<p>#define NOTE_C2 65<\/p>\n\n\n\n<p>#define NOTE_CS2 69<\/p>\n\n\n\n<p>#define NOTE_D2 73<\/p>\n\n\n\n<p>#define NOTE_DS2 78<\/p>\n\n\n\n<p>#define NOTE_E2 82<\/p>\n\n\n\n<p>#define NOTE_F2 87<\/p>\n\n\n\n<p>#define NOTE_FS2 93<\/p>\n\n\n\n<p>#define NOTE_G2 98<\/p>\n\n\n\n<p>#define NOTE_GS2 104<\/p>\n\n\n\n<p>#define NOTE_A2 110<\/p>\n\n\n\n<p>#define NOTE_AS2 117<\/p>\n\n\n\n<p>#define NOTE_B2 123<\/p>\n\n\n\n<p>#define NOTE_C3 131<\/p>\n\n\n\n<p>#define NOTE_CS3 139<\/p>\n\n\n\n<p>#define NOTE_D3 147<\/p>\n\n\n\n<p>#define NOTE_DS3 156<\/p>\n\n\n\n<p>#define NOTE_E3 165<\/p>\n\n\n\n<p>#define NOTE_F3 175<\/p>\n\n\n\n<p>#define NOTE_FS3 185<\/p>\n\n\n\n<p>#define NOTE_G3 196<\/p>\n\n\n\n<p>#define NOTE_GS3 208<\/p>\n\n\n\n<p>#define NOTE_A3 220<\/p>\n\n\n\n<p>#define NOTE_AS3 233<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p>\/\/DECLARACION DE PUERTOS<br>int altavoz = 8;<br>int potenciometro = A2;<br>unsigned long previousMicros=0;<br>unsigned long previousMicros2=0;<br>unsigned long previousMicros3=0;<br>unsigned long previousMicros4=0;<br>unsigned long previousMicros5=0;<br>unsigned long previousMicros6=0;<br>unsigned long previousMicros7=0;<br>unsigned long previousMicros8=0;<br>unsigned long currentMicros;<br>int button=A1;<br>int button2=A3;<br>int button3=A4;<br>int button4=A5;<br>int button5=7;<br>int button6=6;<br>int button7=5;<br>int button8=4;<br>int pedal=2;<br>int buttonState1, buttonState2, buttonState3 , buttonState4 , buttonState5 , buttonState6 , buttonState7 , buttonState8, pedalState ;<br>int buttonStatePotenciometro=0;<\/p>\n\n\n\n<p>\/\/NOTAS<br>int frec1=0;int frec2=0;int frec3=0;int frec4=0;int frec5=0;int frec6=0;int frec7=0;int frec8=0;<\/p>\n\n\n\n<p>String escala=\u00bb\u00bb;<br>String sostenido=\u00bb\u00bb;<br>bool sos=false;<\/p>\n\n\n\n<p>\/\/ CONSTRUCTOR PARA LA PANTALLA LCD 16X2<br>#include LiquidCrystal lcd(12, 11, 13, 10, 9, 3);<\/p>\n\n\n\n<p>void setup(){<br>lcd.begin(16, 2);\/\/inicializador pantalla LCD 16&#215;2<\/p>\n\n\n\n<p>pinMode(altavoz,OUTPUT);<br>pinMode(button5,INPUT);<br>pinMode(button6,INPUT);<br>pinMode(button7,INPUT);<br>pinMode(button8,INPUT);<br>pinMode(pedal,INPUT);<br>\/\/DDRD &amp;= !B11110100; \/\/Puerto D7 D6 D5 D4 D2 como INPUT<br>\/\/DDRB |= B00000001; \/\/Puerto D8 Establecido como OUTPUT<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void loop(){<br>pedalState = digitalRead(pedal); \/\/Lee el estado del bot\u00f3n correspondiente al pedal<br>buttonStatePotenciometro = analogRead(potenciometro); \/\/Lee el valor del potenciometro para saber en que octava estamos<br>currentMicros=micros(); \/\/Cuenta el tiempo desde que se enciende la placa<\/p>\n\n\n\n<p>\/\/Comprobamos en que octava estamos<br>\/\/AQUI SE PUEDE CAMBIAR LAS FRECUENCIAS POR LOS #DEFINE QUE ESTAN ARRIBA SI SE QUIERE CAMBIAR LOS SONIDOS<br>\/\/SOLO HAY QUE SUSTITUIR CADA VARIABLE DE FREC POR LA NOTA QUE SE QUIERE<br>if(buttonStatePotenciometro&gt;500){<br>if(pedalState==LOW){<br>frec1=127;frec2=134;frec3=142;frec4=150;frec5=159;frec6=169;frec7=179;frec8=190;<br>escala=\u00bbgrave\u00bb;<br>sostenido=\u00bbnatural\u00bb;<br>sos=false;<br>}<br>else{<br>frec1=201;frec2=213;frec3=225;frec4=239;frec5=253;frec6=268;frec7=284;frec8=301;<br>escala=\u00bbgrave\u00bb;<br>sostenido=\u00bbsostenido\u00bb;<br>sos=true;<br>}<br>}<br>else{<br>if(pedalState==LOW){frec1=1012; frec2=1073;frec3=1136;frec4=1204;frec5=1276;frec6=1351;frec7=1432;frec8=1517;<br>escala=\u00bbaguda\u00bb;<br>sostenido=\u00bbnatural\u00bb;<br>sos=false;<br>}<br>else{<br>frec1=1607;frec2=1703;frec3=1804;frec4=1911;frec5=2025;frec6=2145;frec7=2272;frec8=2408;<br>escala=\u00bbaguda\u00bb;<br>sostenido=\u00bbsostenido\u00bb;<br>sos=true;<br>}<br>}<\/p>\n\n\n\n<p>\/\/PRIMER BOT\u00d3N<br>if(PINC &amp; B000010){ \/\/Comprobamos si el primer boton esta en HIGH directamente desde el registro<br>\/\/Escribimos la nota en el LCD<br>lcd.clear();<br>if(sos==false){<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abDo \u00ab+sostenido);<br>}else{<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abRe \u00ab+sostenido);<br>}<br>\/\/Hacemos que el tono de este bot\u00f3n se ejecute cada 0,002 segundos<br>if(currentMicros &#8211; previousMicros &gt;= 2000){<br>previousMicros = currentMicros;<br>tone(altavoz,frec1,20); \/\/Hace sonar la frecuencia de frec1 (cambiar frec1 si se quiere otra nota)<br>}<br>}<\/p>\n\n\n\n<p>\/\/SEGUNDO BOTON<br>if(PINC &amp; B001000){<br>\/\/Escribimos la nota en el LCD<br>lcd.clear();<br>if(sos==false){<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abRe \u00ab+sostenido);<br>}else{<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abMi \u00ab+sostenido);<br>}<br>if(currentMicros &#8211; previousMicros2 &gt;= 1000){ \/\/se ejecuta cada 0,001 segundos<br>Serial.println(\u00abHOLA2143234\u00bb);<br>\/\/tone(altavoz2,1804,100);<br>tone(altavoz,frec2,20); \/\/Hace sonar la frecuencia de frec1 (cambiar frec2 si se quiere otra nota)<br>}<br>}<\/p>\n\n\n\n<p>\/\/TERCERO BOTON<br>if(PINC &amp; B010000){<br>\/\/Escribimos la nota en el LCD<br>lcd.clear();<br>if(sos==false){<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abMi \u00ab+sostenido);<br>}else{<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abFa \u00ab+sostenido);<br>}<br>if(currentMicros &#8211; previousMicros3 &gt;= 1500){ \/\/se ejecuta cada 0,0015 segundos<br>previousMicros3 = currentMicros;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  tone(altavoz,frec3,20); \/\/Hace sonar la frecuencia de frec1 (cambiar frec3 si se quiere otra nota)\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/CUARTO BOTON\nif(PINC &amp; B100000){\n  \/\/Escribimos la nota en el LCD\n  lcd.clear();\n  if(sos==false){\n    lcd.setCursor(2,0);\n    lcd.print(\"Escala \"+escala);\n    lcd.setCursor(3,1);\n    lcd.print(\"Fa \"+sostenido);\n  }else{\n    lcd.setCursor(2,0);\n    lcd.print(\"Escala \"+escala);\n    lcd.setCursor(3,1);\n    lcd.print(\"Sol \"+sostenido);\n    }\n  if(currentMicros - previousMicros4 &gt;= 2500){ \/\/se ejecuta cada 0,0025 segundos\n     previousMicros4 = currentMicros;\n\n    tone(altavoz,frec4,20); \/\/Hace sonar la frecuencia de frec4 (cambiar frec4 si se quiere otra nota)\n  }\n}\n\n\/\/QUINTO BOTON\nif(PIND &amp; B10000000){\n  \/\/Escribimos la nota en el LCD\n  lcd.clear();\nif(sos==false){\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"Sol \"+sostenido);\n}else{\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"La \"+sostenido);\n  }\nif(currentMicros - previousMicros5 &gt;= 2700){ \/\/se ejecuta cada 0,0027 segundos\n   previousMicros5 = currentMicros; \n\n  tone(altavoz,frec5,20); \/\/Hace sonar la frecuencia de frec5 (cambiar frec5 si se quiere otra nota)\n}\n}<\/code><\/pre>\n\n\n\n<p>\/\/SEXTO BOTON<br>if(PIND &amp; B01000000){<br>\/\/Escribimos la nota en el LCD<br>lcd.clear();<br>if(sos==false){<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abLa \u00ab+sostenido);<br>}else{<br>lcd.setCursor(2,0);<br>lcd.print(\u00abEscala \u00ab+escala);<br>lcd.setCursor(3,1);<br>lcd.print(\u00abSi \u00ab+sostenido);<br>}<br>if(currentMicros &#8211; previousMicros6 &gt;= 1200){ \/\/se ejecuta cada 0,0012 segundos<br>previousMicros6 = currentMicros;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>  tone(altavoz,frec6,20); \/\/Hace sonar la frecuencia de frec6 (cambiar frec6 si se quiere otra nota)\n}\n}\n\n\/\/SEPTIMO BOTON\nif(PIND &amp; B00100000){\n  \/\/Escribimos la nota en el LCD\n  lcd.clear();\nif(sos==false){\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"Si \"+sostenido);\n}else{\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"Do #\");\n  }\nif(currentMicros - previousMicros7 &gt;= 1700){ \/\/se ejecuta cada 0,0017 segundos\n   previousMicros7 = currentMicros;\n  tone(altavoz,frec7,20); \/\/Hace sonar la frecuencia de frec7 (cambiar frec7 si se quiere otra nota)\n}\n}\n\n\/\/OCTAVO BOTON\nif(PIND &amp; B00010000){\n  \/\/Escribimos la nota en el LCD\n  lcd.clear();\nif(sos==false){\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"Do sostenido\");\n}else{\n  lcd.setCursor(2,0);\n  lcd.print(\"Escala \"+escala);\n  lcd.setCursor(3,1);\n  lcd.print(\"Re #\");\n  }\nif(currentMicros - previousMicros8 &gt;= 900){ \/\/se ejecuta cada 0,0009 segundos\n   previousMicros8 = currentMicros;\n  tone(altavoz,frec8,20); \/\/Hace sonar la frecuencia de frec8 (cambiar frec8 si se quiere otra nota)\n}\n}<\/code><\/pre>\n\n\n\n<p>}<\/p>\n\n\n\n<p>Como dec\u00eda antes, ARDUINO es secuencial y no podemos tocar varias notas a la vez, teniendo el c\u00f3digo a mano puedo explicar como hemos conseguido que se ejecuten no 2 sonidos a la vez si no varios sonidos a la vez. Contamos con la funci\u00f3n micros() que es como un contador que se inicia cuando la placa le llega corriente, por lo que vamos a hacer que  cada tecla de nuestro proyecto se ejecute cada x momento, de tal manera que por ejemplo un sonido se escucha cada 0.001 s y el siguiente cada 0.003 y aunque realmente no se ejecuten a la vez, se puede enga\u00f1ar al o\u00eddo con estos tiempos tan peque\u00f1os y que parezca que suenen simult\u00e1neamente como si estuvi\u00e9ramos tocando un piano de verdad.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Casos de Uso<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Potenci\u00f3metro por debajo de 500 escala grave <\/li><li>Potenci\u00f3metro por encima de 500 escala aguda<\/li><li>En cada escala y al pulsar la tecla 9 se accede a los sostenidos ( la 8 ya es sostenido de por si y al pulsarla junto a la tecla 9 marca la nota y # que es lo siguiente a sostenido)<\/li><li>Poder pulsar dos o mas teclas a la vez gracias a que accedemos directamente a los pines y podemos controlar mejor los tiempos haciendo que parezca que suenan a la vez <\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Problemas encontrados y soluciones<\/h2>\n\n\n\n<p><strong>El principal<\/strong> ha sido poder tocar varias teclas a la vez , ya que no se puede o es muy dif\u00edcil el uso de threads para poder ejecutar varios sonidos a la vez, ademas de que se necesitar\u00eda otro altavoz para poder acceder en la secci\u00f3n critica a los dos recursos a la vez. Por ello, buscamos informaci\u00f3n de como controlar los tiempos para que cuando no se esta ejecutando una acci\u00f3n lo haga otra. Encontramos que se pod\u00edan acceder directamente a los puertos mediante el controlador Artmega 328p. Esto permite acceder a los registros de los puertos y as\u00ed saltarnos los digitalWrites y reads que no hacen m\u00e1s que ejecutar una rutina interna que consume m\u00e1s milisegundos.<\/p>\n\n\n\n<p>Otros problemas:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Soldar los botones, estaban hechos en parte de pl\u00e1stico, en una zona muy cercana a las patillas de contacto. Al intentar fundir el esta\u00f1o se deshac\u00eda el bot\u00f3n. Para solucionarlo, usamos un cable encima de la tecla y otro cable conectado a otra chincheta en la caja donde va a pulsar la tecla. Al bajar la tecla , el cable hace contacto con la chincheta simulando un bot\u00f3n y encima es bastante m\u00e1s barato <\/li><\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/i.imgur.com\/YcwslqI.png\" alt=\"\" width=\"138\" height=\"140\"\/><\/figure>\n<\/div>\n\n\n<ul class=\"wp-block-list\"><li>Los cables, demasiados cables y dif\u00edcil de maniobrar por la condici\u00f3n de la caja del piano, ten\u00edamos que ir con pinzas.<\/li><li>Pitidos sin que toc\u00e1semos los botones( video continuaci\u00f3n ) . La soluci\u00f3n fue empezar de cero<\/li><\/ul>\n\n\n\n<p><a href=\"https:\/\/youtube.com\/shorts\/PqGeQRUKwxs?feature=share\">https:\/\/youtube.com\/shorts\/PqGeQRUKwxs?feature=share<\/a><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>La alineaci\u00f3n de las teclas<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Reparto de tareas<\/h2>\n\n\n\n<p>Los dos( David y Ra\u00fal) hemos hecho todas las partes , participando ambos en cada una. No hemos hecho una separaci\u00f3n de tareas. Qued\u00e1bamos para hacerlo de manera presencial y est\u00e1bamos pendiente del mismo problema.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Video con todo el proyecto<\/h2>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<div class=\"video-container\"><iframe loading=\"lazy\" title=\"proyectoFinalSEyTR grupo 14\" width=\"500\" height=\"281\" src=\"https:\/\/www.youtube.com\/embed\/ej1V75j_kZc?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><\/div>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Autores: David Paredes G\u00f3mez Ra\u00fal Rodr\u00edguez L\u00f3pez -Rey Introducci\u00f3n El proyecto como su titulo indica, consiste en la realizaci\u00f3n de un piano con un Arduino Uno que permita tocar 32 notas. 16 agudas y&#46;&#46;&#46;<\/p>\n","protected":false},"author":34,"featured_media":5126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5111","post","type-post","status-publish","format-standard","has-post-thumbnail","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>Piano 32 notas - Proyectos con Arduino.<\/title>\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\/piano-32-notas\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Piano 32 notas - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"Autores: David Paredes G\u00f3mez Ra\u00fal Rodr\u00edguez L\u00f3pez -Rey Introducci\u00f3n El proyecto como su titulo indica, consiste en la realizaci\u00f3n de un piano con un Arduino Uno que permita tocar 32 notas. 16 agudas y&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-10T18:33:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-06-03T08:07:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 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\\\/piano-32-notas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Piano 32 notas\",\"datePublished\":\"2022-05-10T18:33:05+00:00\",\"dateModified\":\"2022-06-03T08:07:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/\"},\"wordCount\":2197,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/piano-1.jpg\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/\",\"name\":\"Piano 32 notas - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/piano-1.jpg\",\"datePublished\":\"2022-05-10T18:33:05+00:00\",\"dateModified\":\"2022-06-03T08:07:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/piano-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/05\\\/piano-1.jpg\",\"width\":1920,\"height\":1080,\"caption\":\"Piano\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-32-notas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Piano 32 notas\"}]},{\"@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\":\"\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/author\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Piano 32 notas - Proyectos con Arduino.","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\/piano-32-notas\/","og_locale":"es_ES","og_type":"article","og_title":"Piano 32 notas - Proyectos con Arduino.","og_description":"Autores: David Paredes G\u00f3mez Ra\u00fal Rodr\u00edguez L\u00f3pez -Rey Introducci\u00f3n El proyecto como su titulo indica, consiste en la realizaci\u00f3n de un piano con un Arduino Uno que permita tocar 32 notas. 16 agudas y&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2022-05-10T18:33:05+00:00","article_modified_time":"2022-06-03T08:07:49+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"12 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/"},"author":{"name":"","@id":""},"headline":"Piano 32 notas","datePublished":"2022-05-10T18:33:05+00:00","dateModified":"2022-06-03T08:07:49+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/"},"wordCount":2197,"commentCount":1,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/","name":"Piano 32 notas - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg","datePublished":"2022-05-10T18:33:05+00:00","dateModified":"2022-06-03T08:07:49+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/05\/piano-1.jpg","width":1920,"height":1080,"caption":"Piano"},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-32-notas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Piano 32 notas"}]},{"@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":"","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/author\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5111","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\/34"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=5111"}],"version-history":[{"count":8,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5111\/revisions"}],"predecessor-version":[{"id":5805,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5111\/revisions\/5805"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/5126"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=5111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=5111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=5111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}