{"id":20,"date":"2019-04-28T20:13:00","date_gmt":"2019-04-28T20:13:00","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=20"},"modified":"2019-05-04T18:44:53","modified_gmt":"2019-05-04T18:44:53","slug":"piano-toca-discos","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/","title":{"rendered":"Piano Toca Discos"},"content":{"rendered":"<h2>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif; font-size: x-large;\">PIANO TOCADISCOS &#8211; Grupo 26<\/span><\/h2>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Integrantes:<\/span><\/h3>\n<div>\n<ul>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Antonio Alcojor Patilla<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Iv\u00e1n Motos Montalb\u00e1n<\/span><\/li>\n<\/ul>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Descripci\u00f3n del proyecto:<\/span><\/h3>\n<\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">En este proyecto hemos hecho que dos disqueteras reproduzcan m\u00fasica, ya sea a trav\u00e9s de un piano pintado a l\u00e1piz en un papel o bien mediante archivos MIDI que reciben las disqueteras con la ayuda de un programa Java externo.<\/span><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Al final tenemos un Arduino que, si se encuentra conectado \u00fanicamente a la red el\u00e9ctrica, es capaz de reproducir m\u00fasica en las disqueteras a trav\u00e9s de las pulsaciones que recibe por el piano de papel, Mientras que, si se conecta tambi\u00e9n por USB, es capaz de recibir archivos MIDI parseados por un programa Java y transferirlos a las disqueteras para reproducir dicha m\u00fasica.<\/span><\/div>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Componentes:<\/span><\/h3>\n<div>\n<ul>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">1 Arduino Nano<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">2 disqueteras<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">1 m\u00f3dulo MB102 de alimentaci\u00f3n, necesario para suministrar constantemente 5V a las disqueteras, cosa que el Arduino enchufado por USB no es capaz de hacer. Este m\u00f3dulo alimenta tambi\u00e9n a Arduino<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">1 folio<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Resistencias<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Cables<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Clips<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">1 l\u00e1piz<\/span><\/li>\n<\/ul>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Fases del proyecto:<\/span><\/h3>\n<\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Para desarrollar el proyecto de una forma incremental y poder organizar correctamente el trabajo, decidimos dividir el trabajo en 4 fases, las cuales detallamos a continuaci\u00f3n con los problemas encontrados en ellas.<\/span><\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Fase 1<\/span><\/h4>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">En esta fase nos centramos en conseguir que Arduino detectase las pulsaciones ejercidas sobre las diferentes teclas del piano de papel, bas\u00e1ndonos en la capacitancia del cuerpo humano<\/span><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">. El trabajo en esta fase fue sencillo, si bien hubo que controlar la sensibilidad, ya que Arduino detectaba las pulsaciones sobre una tecla en un extremo del folio si pulsabas en el otro extremo.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2-1024x430.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"453\" data-original-width=\"1080\" height=\"134\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2-1024x430.png\" width=\"320\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/TeclaBien_bb2-850x1024.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1131\" data-original-width=\"939\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/TeclaBien_bb2-850x1024.png\" width=\"265\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<\/div>\n<p><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Fase 2<\/span><\/h4>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">En esta fase nos centramos en conseguir que las disqueteras consiguieran emitir notas musicales atendiendo a las pulsaciones que recib\u00edan desde el teclado del ordenador.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Para ello, nos basamos en que una disquetera de 3.5 pulgadas posee 80 pistas, haciendo ruido al pasar de una a otra. Si hacemos que pase de unas pistas a otras consecutivamente y ajustamos la frecuencia, la disquetera emite sonidos que se asemejan a las notas musicales.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">El principal problema encontrado en esta fase fue el del voltaje. Arduino es capaz de alimentar a peque\u00f1os componentes como LEDs, resistencias, potenci\u00f3metros&#8230; pero no era capaz de suministrar constantemente los 5V que necesitaban las resistencias. Por ello, decidimos usar el m\u00f3dulo MB102, el cual se encargar\u00eda de alimentar a todos los componentes (Arduino incluido) para su correcto funcionamiento.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/CorrespondenciaTeclas.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"184\" data-original-width=\"487\" height=\"120\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/CorrespondenciaTeclas.png\" width=\"320\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<\/div>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Disquetera_bb2-1024x778.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"1215\" data-original-width=\"1600\" height=\"243\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Disquetera_bb2-1024x778.png\" width=\"320\" \/><\/a><\/div>\n<div style=\"text-align: center;\">\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Fase 3<\/span><\/h4>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">En esta fase nos centramos en juntar lo conseguido en la fase 1 con lo logrado en la fase 2, es decir, que Arduino detectase qu\u00e9 tecla estamos pulsando y, en funci\u00f3n de ello, le pase la informaci\u00f3n a las disqueteras sobre qu\u00e9 sonido deben emitir. Las pruebas en la fase 2 fueron con una \u00fanica disquetera, por lo que en esta fase tuvimos que encargarnos de sincronizar ambas disqueteras y que emitieran el mismo sonido con la misma entrada.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">El problema en esta fase fue el estado de la disquetera que a\u00f1adimos, la cual estaba defectuosa, no se escuchaba del todo bien (el volumen era muy bajo) y se quedaba a veces como atascada.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2Bdisquetera-1024x512.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"800\" data-original-width=\"1600\" height=\"160\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2Bdisquetera-1024x512.png\" width=\"320\" \/><\/a><\/div>\n<p><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Fase 4<\/span><\/h4>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">La \u00faltima fase fue bastante m\u00e1s complicada, y se basaba en, con Arduino conectado por USB y a la red a trav\u00e9s del m\u00f3dulo de alimentaci\u00f3n, lograr que las disqueteras reprodujesen una canci\u00f3n sacada de un archivo MIDI. Para ello, contamos con la ayuda de un programa Java base que tuvimos que retocar, llamado MoppyDesk, que le\u00eda los archivos MIDI y los parseaba pasando la informaci\u00f3n a las disqueteras, mientras nosotros podemos controlar la velocidad a la que transfiere esos datos.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Intentamos realizar tambi\u00e9n una alternancia autom\u00e1tica entre los dos modos del piano. Para ello tomamos un tiempo de referencia, en nuestro caso 5 segundos. Si en esos 5 segundos Arduino no recibe nada por el Serial, entonces es que no est\u00e1 reproduciendo ning\u00fan archivo MIDI, por lo tanto debe reaccionar a las pulsaciones del teclado.<\/span><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Esta fase fue m\u00e1s compleja debido al retoque de c\u00f3digo que tuvimos que hacer en un programa que no hab\u00eda sido programado por nosotros, adem\u00e1s de que hay ciertas notas que, por su escala o por ir demasiado juntas, no las detecta el programa y no consigue transferirlas correctamente a la disquetera.<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Por \u00faltimo, se da la circunstancia de que normalmente los archivos MIDI tienen varias pistas con varios instrumentos que, juntos, reproducen la canci\u00f3n. Como nosotros disponemos \u00fanicamente de dos disqueteras que, en paralelo, emiten el mismo sonido, deb\u00edamos usar otro programa externo para transformar los MIDI en canciones de un solo canal<\/span><br \/>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><br \/>\n<\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/ProgramaJava.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"326\" data-original-width=\"387\" height=\"269\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/ProgramaJava.png\" width=\"320\" \/><\/a><\/div>\n<p><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">C\u00f3digo<\/span><\/h4>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo1-1.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"435\" data-original-width=\"435\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo1-1.png\" width=\"320\" \/><\/a><\/div>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo2-1.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"522\" data-original-width=\"348\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo2-1.png\" width=\"213\" \/><\/a><\/div>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo3-1.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"499\" data-original-width=\"397\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo3-1.png\" width=\"254\" \/><\/a><\/div>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo4-1.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"580\" data-original-width=\"237\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo4-1.png\" width=\"130\" \/><\/a><\/div>\n<p><\/p>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo5.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"580\" data-original-width=\"386\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/Codigo5.png\" width=\"212\" \/><\/a><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: left;\">\n<\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><\/span><\/p>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">#include &lt;TimerOne.h&gt;<\/span><\/div>\n<p><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/>\n<\/span><\/p>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<p><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><\/p>\n<div>\nconst int&nbsp; stepPins [] = {3, 5}; \/\/ 20 on floppy<\/div>\n<div>\nconst int&nbsp; directionPins [] = {2, 4}; \/\/ 18 on floppy<\/div>\n<div>\n<\/div>\n<div>\nconst int MAX_FLOPPYS = 2;<\/div>\n<div>\n<\/div>\n<div>\nconst boolean goBackwards = LOW;<\/div>\n<div>\nconst boolean goForwards = HIGH;<\/div>\n<div>\n<\/div>\n<div>\nconst int PERIOD_TIME = 40;<\/div>\n<div>\n<\/div>\n<div>\nint currentPosition1 = 0;<\/div>\n<div>\nboolean dir1;<\/div>\n<div>\nint ticks1 = 0;<\/div>\n<div>\n<\/div>\n<div>\nconst int maxValue = 80;<\/div>\n<div>\nconst int minValue = 0;<\/div>\n<div>\n<\/div>\n<div>\nint delayedTime = 5;<\/div>\n<div>\n<\/div>\n<div>\nint currentNote1 = 0;<\/div>\n<div>\n<\/div>\n<div>\nint currentStandBy = 0;<\/div>\n<div>\nint const MAX_STANDBY = 20;<\/div>\n<div>\n<\/div>\n<div>\nint notes [] = {<\/div>\n<div>\n&nbsp; 9091, 8099, \/\/A2 B2<\/div>\n<div>\n&nbsp; 7645, 6811, 6068, 5727, 5102 , 4545, 4050, \/\/C3 D3 E3 F3 G3 A4 B4 \/* Las buenas *\/<\/div>\n<div>\n&nbsp; 3822, 3405, 3034, 2863, 2551 \/\/C4 D4 E4 F4 G4<\/div>\n<div>\n};<\/div>\n<div>\nconst int notesLength = 14;<\/div>\n<div>\n<\/div>\n<div>\nconst int START_KEYBOARD_PIN = 6;<\/div>\n<div>\nconst int END_KEYBOARD_PIN = 15;<\/div>\n<div>\nconst int CUT_OFF_ITERATIONS = 20;<\/div>\n<div>\nconst int KEY_NUMBER = (END_KEYBOARD_PIN + 1) &#8211; START_KEYBOARD_PIN;<\/div>\n<div>\n<\/div>\n<div>\n\/\/One for each pin of the arduino<\/div>\n<div>\nint keyResistances [KEY_NUMBER];<\/div>\n<div>\n<\/div>\n<div>\nboolean isPcConnected = false;<\/div>\n<div>\n<\/div>\n<div>\nconst int MAX_TIME_WITHOUT_SERIAL = 2000; \/\/5s esperando el serial, si no viene nada vuelve al modo teclado<\/div>\n<div>\nunsigned long timeWithoutSerial;<\/div>\n<div>\n<\/div>\n<div>\nvoid setup() {<\/div>\n<div>\n&nbsp; Serial.begin(9600);<\/div>\n<div>\n<\/div>\n<div>\n<\/div>\n<div>\n&nbsp; for (int i = 0; i &lt; MAX_FLOPPYS; i++) {<\/div>\n<div>\n&nbsp; &nbsp; pinMode(stepPins[i], OUTPUT);<\/div>\n<div>\n&nbsp; &nbsp; pinMode(directionPins[i], OUTPUT);<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n<\/div>\n<div>\n&nbsp; keyboardReset();<\/div>\n<div>\n&nbsp; reset();<\/div>\n<div>\n&nbsp; calculateNotes();<\/div>\n<div>\n<\/div>\n<div>\n&nbsp; Timer1.initialize(PERIOD_TIME);<\/div>\n<div>\n&nbsp; Timer1.attachInterrupt(tick);<\/div>\n<div>\n<\/div>\n<div>\n&nbsp; timeWithoutSerial = millis();<\/div>\n<div>\n&nbsp; delay(500);<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid loop() {<\/div>\n<div>\n&nbsp; if (!isPcConnected) {<\/div>\n<div>\n&nbsp; &nbsp; if (!Serial.available()) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; int key = getPressedKeys();<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; if (key != 0) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; currentStandBy = 0;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; selectNote(key);<\/div>\n<div>\n&nbsp; &nbsp; } else {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; isPcConnected = true;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; timeWithoutSerial = millis();<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; delay(5);<\/div>\n<div>\n&nbsp; } else {<\/div>\n<div>\n&nbsp; &nbsp; if (!readFromPc()) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; if (millis() &#8211; timeWithoutSerial &gt; MAX_TIME_WITHOUT_SERIAL) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; isPcConnected = false;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; } else {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; timeWithoutSerial = millis();<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; isPcConnected = true;<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; delay(50);<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n&nbsp;&nbsp;<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nboolean readFromPc() {<\/div>\n<div>\n&nbsp; if (Serial.available()) {<\/div>\n<div>\n&nbsp; &nbsp; int result = Serial.read() &lt;&lt; 8 | Serial.read();<\/div>\n<div>\n&nbsp; &nbsp; currentNote1 = result;<\/div>\n<div>\n&nbsp; &nbsp; return true;<\/div>\n<div>\n&nbsp; } else {<\/div>\n<div>\n&nbsp; &nbsp; return false;<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nint getPressedKeys () {<\/div>\n<div>\n&nbsp; bool any = false;<\/div>\n<div>\n&nbsp; for (int i = 0; i &lt; KEY_NUMBER; i++) {<\/div>\n<div>\n&nbsp; &nbsp; if (i == 7) continue; \/\/pin 13<\/div>\n<div>\n&nbsp; &nbsp; if (isKeyTouched(START_KEYBOARD_PIN + i)) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; return START_KEYBOARD_PIN + i;<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n&nbsp; return 0;<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nboolean isKeyTouched(int pin) {<\/div>\n<div>\n&nbsp; return isKeyTouched(pin, false);<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nboolean isKeyTouched (int pin, boolean isSetUp) {<\/div>\n<div>\n&nbsp; int s = 0;<\/div>\n<div>\n&nbsp; for (int i = 0; i &lt; CUT_OFF_ITERATIONS; i++) {<\/div>\n<div>\n&nbsp; &nbsp; s += digitalRead(pin) == HIGH ? 0 : 1;<\/div>\n<div>\n&nbsp; &nbsp; if (!isSetUp &amp;&amp; keyResistances[pin &#8211; START_KEYBOARD_PIN] &lt; s) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; return true;<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n&nbsp; if (isSetUp) {<\/div>\n<div>\n&nbsp; &nbsp; keyResistances[pin &#8211; START_KEYBOARD_PIN] = 0.4 * CUT_OFF_ITERATIONS;<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n&nbsp; return false;<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid selectNote(int key) {<\/div>\n<div>\n&nbsp; int lastNote = currentNote1;<\/div>\n<div>\n<\/div>\n<div>\n&nbsp; switch (key) {<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[2];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN +1&nbsp; :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[3];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 2 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[4];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 3:<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[5];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 4 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[6];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 5 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[7];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 6:<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[8];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; \/\/Se salta el 13<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 8 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[9];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 9 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[10];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 10 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[11];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; case START_KEYBOARD_PIN + 11 :<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentNote1 = notes[12];<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; &nbsp; default:<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentStandBy++;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; if (currentStandBy &gt; MAX_STANDBY) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; currentNote1 = 0;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; break;<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\n<\/div>\n<div>\nvoid tick() {<\/div>\n<div>\n&nbsp; if (currentNote1 &gt; 0) {<\/div>\n<div>\n&nbsp; &nbsp; ticks1++;<\/div>\n<div>\n&nbsp; &nbsp; if (ticks1 &gt;= currentNote1) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; if ((currentPosition1 &gt; maxValue)) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; dir1 = !dir1;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; currentPosition1 = minValue;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; for (int i = 0; i &lt; MAX_FLOPPYS; i++) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; &nbsp; moveFloppy(stepPins[i], directionPins[i], dir1);<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; currentPosition1++;<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; ticks1 = 0;<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid calculateNotes () {<\/div>\n<div>\n&nbsp; for (int i = 0; i &lt; notesLength; i++) {<\/div>\n<div>\n&nbsp; &nbsp; notes[i] \/= PERIOD_TIME;<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid moveFloppy(int stepPin, int directionPin, boolean directionMotor) {<\/div>\n<div>\n&nbsp; digitalWrite(directionPin, directionMotor);<\/div>\n<div>\n&nbsp; digitalWrite(stepPin, HIGH);<\/div>\n<div>\n&nbsp; digitalWrite(stepPin, LOW);<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid reset() {<\/div>\n<div>\n&nbsp; for (int j = 0; j &lt;= MAX_FLOPPYS; j++) {<\/div>\n<div>\n&nbsp; &nbsp; for (int i = 0; i &lt; maxValue*2; i++) {<\/div>\n<div>\n&nbsp; &nbsp; &nbsp; moveFloppy(stepPins[j], directionPins[j], goBackwards);<\/div>\n<div>\n&nbsp; &nbsp; }<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n&nbsp; currentPosition1 = 0;<\/div>\n<div>\n&nbsp; dir1 = goForwards;<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<div>\nvoid keyboardReset() {<\/div>\n<div>\n&nbsp; for (int i = 0; i &lt; KEY_NUMBER; i++) {<\/div>\n<div>\n&nbsp; &nbsp; if (i == 7) continue; \/\/El pin 13<\/div>\n<div>\n&nbsp; &nbsp; isKeyTouched(START_KEYBOARD_PIN + i, true);<\/div>\n<div>\n&nbsp; &nbsp; pinMode(START_KEYBOARD_PIN + i, INPUT);<\/div>\n<div>\n&nbsp; }<\/div>\n<div>\n}<\/div>\n<div>\n<\/div>\n<p><\/span><\/div>\n<h4>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Mejoras<\/span><\/h4>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Posibles mejoras a este proyecto pueden ser:<\/span><\/div>\n<div>\n<ul>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Modularizar mejor el programa para poder a\u00f1adir de forma a\u00fan m\u00e1s f\u00e1cil m\u00e1s disqueteras y m\u00e1s notas. Para ello, sobre todo con las notas, es muy posible requerir de m\u00e1s de un Arduino por falta de salidas<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Hacer que haya disqueteras que reproduzcan sonidos de otros canales de los archivos MIDI, para hacer que suene mejor la m\u00fasica.<\/span><\/li>\n<li><span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Conseguir que el programa Java transfiera las notas correctamente a las disqueteras.<\/span><\/li>\n<\/ul>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Resultado final<\/span><\/h3>\n<\/div>\n<div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<a href=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/ResultadoFinal.png\" imageanchor=\"1\" style=\"margin-left: 1em; margin-right: 1em;\"><img loading=\"lazy\" decoding=\"async\" border=\"0\" data-original-height=\"518\" data-original-width=\"388\" height=\"320\" src=\"https:\/\/blogs.etsii.urjc.es\/wp-content\/uploads\/sites\/8\/2019\/04\/ResultadoFinal.png\" width=\"239\" \/><\/a><\/div>\n<p><\/div>\n<h3>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">V\u00eddeos demostrativos<\/span><\/h3>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<iframe loading=\"lazy\" allowfullscreen=\"\" class=\"YOUTUBE-iframe-video\" data-thumbnail-src=\"https:\/\/i.ytimg.com\/vi\/LQAZVUn0efg\/0.jpg\" frameborder=\"0\" height=\"266\" src=\"https:\/\/www.youtube.com\/embed\/LQAZVUn0efg?feature=player_embedded\" width=\"320\"><\/iframe><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n<div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<iframe loading=\"lazy\" allowfullscreen=\"\" class=\"YOUTUBE-iframe-video\" data-thumbnail-src=\"https:\/\/i.ytimg.com\/vi\/uy7fnc7urow\/0.jpg\" frameborder=\"0\" height=\"266\" src=\"https:\/\/www.youtube.com\/embed\/uy7fnc7urow?feature=player_embedded\" width=\"320\"><\/iframe><\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<\/div>\n<div class=\"separator\" style=\"clear: both; text-align: center;\">\n<\/div>\n<div style=\"text-align: center;\">\n<iframe loading=\"lazy\" allowfullscreen=\"\" class=\"YOUTUBE-iframe-video\" data-thumbnail-src=\"https:\/\/i.ytimg.com\/vi\/RVs0v3yZDv8\/0.jpg\" frameborder=\"0\" height=\"266\" src=\"https:\/\/www.youtube.com\/embed\/RVs0v3yZDv8?feature=player_embedded\" width=\"320\"><\/iframe><\/div>\n<h3 style=\"clear: both; text-align: left;\">\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Conclusi\u00f3n<\/span><\/h3>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\">Este proyecto con Arduino nos ha hecho familiarizarnos con la construcci\u00f3n de un sistema pensado para solucionar un problema concreto mediante el entorno de Arduino. Ha sido una experiencia bastante divertida y entretenida, y hemos visto como con Arduino y un poco de ma\u00f1a se pueden realizar cosas bastante trabajadas y originales.<\/span><\/div>\n<p><\/div>\n<div>\n<span style=\"font-family: &quot;arial&quot; , &quot;helvetica&quot; , sans-serif;\"><br \/><\/span><\/div>\n","protected":false},"excerpt":{"rendered":"<p>PIANO TOCADISCOS &#8211; Grupo 26 Integrantes: Antonio Alcojor Patilla Iv\u00e1n Motos Montalb\u00e1n Descripci\u00f3n del proyecto: En este proyecto hemos hecho que dos disqueteras reproduzcan m\u00fasica, ya sea a trav\u00e9s de un piano pintado a&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":1841,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-20","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.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Piano Toca Discos - 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-toca-discos\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Piano Toca Discos - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"PIANO TOCADISCOS &#8211; Grupo 26 Integrantes: Antonio Alcojor Patilla Iv\u00e1n Motos Montalb\u00e1n Descripci\u00f3n del proyecto: En este proyecto hemos hecho que dos disqueteras reproduzcan m\u00fasica, ya sea a trav\u00e9s de un piano pintado a&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-28T20:13:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-05-04T18:44:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"453\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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=\"9 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-toca-discos\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/\"},\"author\":{\"name\":\"Administrador de la red\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#\\\/schema\\\/person\\\/bdc38fea664f13638d2a51f4d2fc7211\"},\"headline\":\"Piano Toca Discos\",\"datePublished\":\"2019-04-28T20:13:00+00:00\",\"dateModified\":\"2019-05-04T18:44:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/\"},\"wordCount\":1754,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/04\\\/Teclas2.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/\",\"name\":\"Piano Toca Discos - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/04\\\/Teclas2.png\",\"datePublished\":\"2019-04-28T20:13:00+00:00\",\"dateModified\":\"2019-05-04T18:44:53+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/04\\\/Teclas2.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2019\\\/04\\\/Teclas2.png\",\"width\":1080,\"height\":453},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/piano-toca-discos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Piano Toca Discos\"}]},{\"@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":"Piano Toca Discos - 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-toca-discos\/","og_locale":"es_ES","og_type":"article","og_title":"Piano Toca Discos - Proyectos con Arduino.","og_description":"PIANO TOCADISCOS &#8211; Grupo 26 Integrantes: Antonio Alcojor Patilla Iv\u00e1n Motos Montalb\u00e1n Descripci\u00f3n del proyecto: En este proyecto hemos hecho que dos disqueteras reproduzcan m\u00fasica, ya sea a trav\u00e9s de un piano pintado a&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2019-04-28T20:13:00+00:00","article_modified_time":"2019-05-04T18:44:53+00:00","og_image":[{"width":1080,"height":453,"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png","type":"image\/png"}],"author":"Administrador de la red","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Administrador de la red","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/"},"author":{"name":"Administrador de la red","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#\/schema\/person\/bdc38fea664f13638d2a51f4d2fc7211"},"headline":"Piano Toca Discos","datePublished":"2019-04-28T20:13:00+00:00","dateModified":"2019-05-04T18:44:53+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/"},"wordCount":1754,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/","name":"Piano Toca Discos - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png","datePublished":"2019-04-28T20:13:00+00:00","dateModified":"2019-05-04T18:44:53+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2019\/04\/Teclas2.png","width":1080,"height":453},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/piano-toca-discos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Piano Toca Discos"}]},{"@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\/20","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=20"}],"version-history":[{"count":2,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":2151,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/20\/revisions\/2151"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media\/1841"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}