{"id":5995,"date":"2022-12-17T20:49:49","date_gmt":"2022-12-17T19:49:49","guid":{"rendered":"https:\/\/blogs.etsii.urjc.es\/dseytr\/?p=5995"},"modified":"2022-12-17T20:49:51","modified_gmt":"2022-12-17T19:49:51","slug":"traductor-bidireccional-espanol-morse","status":"publish","type":"post","link":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/","title":{"rendered":"Traductor bidireccional Espa\u00f1ol-Morse"},"content":{"rendered":"\n<p class=\"has-medium-font-size\"><strong>1.Introducci\u00f3n <\/strong><\/p>\n\n\n\n<p><strong>Si desea consultar el c\u00f3digo est\u00e1 en el ANEXO<\/strong> <strong>al final del documento<\/strong><\/p>\n\n\n\n<p class=\"has-text-align-left\">Para este proyecto avanzado de la asignatura de DSE, el proyecto que se va a hacer es un traductor del abecedario a morse, y de morse al abecedario. La idea ocurri\u00f3 en una clase tras haber realizado una de las partes guiadas de la asignatura, m\u00e1s concretamente la del pulsador, ya que pensamos desde un primer momento que podr\u00edamos captar esas se\u00f1ales para hacer algo con c\u00f3digo morse. Tras varias ideas paralelas sin fluctuar, se decidi\u00f3 hacer un traductor, ya que es pr\u00e1ctico, \u00fatil, y no se depende de ninguna pieza externa que no pudiese llegar en plazo y, o que viniera defectuosa. <\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>2. Motivaci\u00f3n y objetivo.<\/strong> <\/p>\n\n\n\n<p>La principal motivaci\u00f3n para querer hacer este proyecto es la curiosidad. Adem\u00e1s, el objetivo es generar un sistema \u00fatil y realista. Por tanto, el proyecto ha sido Traductor a morse por la utilizaci\u00f3n de este en la cultura popular. Para finalizar, las pr\u00e1cticas guiadas y obligatorias de la asignatura mostraron una amplia variedad de alternativas hardware y software para realizar proyectos ambiciosos de diversas formas, ya que el kit de Arduino dado por los profesores es suficiente para lograrlo sin depender de fuentes externas. En otras palabras, el objetivo es hacer un hardware y software funcionales que implementen un sistema de entrada de morse o abecedario, y que haya una salida del lenguaje contrario, de la forma \u00f3ptima posible. <\/p>\n\n\n\n<p>2.1. Reparto de trabajo <\/p>\n\n\n\n<p>Para este proyecto se seguir\u00e1 este sistema de organizaci\u00f3n: <\/p>\n\n\n\n<p>1. Investigaci\u00f3n en solitario. <\/p>\n\n\n\n<p>2. Bocetos en solitario. <\/p>\n\n\n\n<p>3. Puesta en com\u00fan. <\/p>\n\n\n\n<p>4. Desarrollo final. <\/p>\n\n\n\n<p>Posteriormente cuando se haga alusi\u00f3n al hardware y al software se hace referencia a la etapa 4(Desarrollo final del proyecto). El apartado software se divide en sus dos funcionalidades posibles, en las que se profundizar\u00e1 de forma individual para as\u00ed indagar en distintos campos para llegar a la soluci\u00f3n m\u00e1s refinada. <\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>3. Hardware<\/strong> <\/p>\n\n\n\n<p>Antes de comenzar con el apartado hardware hay que diferenciar estos dos casos que ser\u00e1n importantes para la implementaci\u00f3n:<\/p>\n\n\n\n<p> Caso 1: Traductor abecedario- morse. El cual como entrada tiene el teclado del ordenador y puede traducir palabras en cualquier idioma de nuestro alfabeto a morse. <\/p>\n\n\n\n<p>Caso 2: Traductor morse-abecedario, como entrada tiene un pulsador, y traduce por letra, ya que si se hace una pausa comenzar\u00e1 a traducir la siguiente letra. En cuanto a la parte hardware del proyecto, se comenzar\u00e1 analizando las piezas clave para el funcionamiento correcto de este. <\/p>\n\n\n\n<p>En primer lugar, el pulsador: El pulsador es necesario por su funcionalidad de entrada para el c\u00f3digo morse (para los puntos y las rayas cuando se opere con el segundo caso). Aunque no era la \u00fanica soluci\u00f3n posible, ya que se podr\u00eda utilizar el teclado del ordenador para escribirlo, no tendr\u00eda sentido escribir en c\u00f3digo morse con un teclado lleno de letras, por lo que, para darle m\u00e1s realismo y utilidad, utilizamos el pulsador. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"109\" height=\"122\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png\" alt=\"\" class=\"wp-image-5997\" \/><\/figure>\n\n\n\n<p>La segunda pieza clave es el zumbador, el cual es utilizado para el caso 1 (traducir del abecedario a morse). Su utilidad es mostrar de forma auditiva los puntos y las rayas, dichos zumbidos tendr\u00e1n duraciones distintas. En otras palabras, es una de las salidas del caso 1. Adem\u00e1s, como la implementaci\u00f3n se podr\u00e1 hacer por palabras habr\u00e1 pausas para diferenciar bien cada letra que est\u00e9 traduciendo. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"105\" height=\"132\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-5.png\" alt=\"\" class=\"wp-image-5998\" \/><\/figure>\n\n\n\n<p>En cuanto a la luz LED, este forma parte de ambos casos, ya que se ilumina al ritmo de los puntos y las rayas en el primero y se ilumina cuando el pulsador est\u00e1 activado en el segundo, para as\u00ed tener una comprensi\u00f3n m\u00e1s completa de lo que est\u00e1 traduciendo. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"90\" height=\"126\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-6.png\" alt=\"\" class=\"wp-image-5999\" \/><\/figure>\n\n\n\n<p>El potenci\u00f3metro se ha utilizado para controlar el contraste de la pantalla LCD, conect\u00e1ndose al mismo adem\u00e1s de a tierra y a corriente. Una de las piezas m\u00e1s visibles del proyecto es la pantalla LCD, que se ha utilizado para mostrar la respuesta al usuario por pantalla, haciendo as\u00ed el funcionamiento del sistema m\u00e1s din\u00e1mico e intuitivo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"119\" height=\"110\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-7.png\" alt=\"\" class=\"wp-image-6000\" \/><\/figure>\n\n\n\n<p> En lo que a resistencias concierne, se utiliza una resistencia de 220k\u03a9, la cual es necesaria para el correcto funcionamiento del led y una de 1k\u03a9 para la conexi\u00f3n de la pantalla LCD.<\/p>\n\n\n\n<p> Resultado final del hardware unificado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-3.png\" alt=\"\" class=\"wp-image-5996\" width=\"353\" height=\"271\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-3.png 618w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-3-300x231.png 300w\" sizes=\"auto, (max-width: 353px) 100vw, 353px\" \/><\/figure>\n\n\n\n<p> Lo que se muestra con las im\u00e1genes es un sistema basado en las se\u00f1ales digitales, unidas a todas las piezas el\u00e9ctricas utilizadas. Esto es debido que en la parte hardware para el funcionamiento es necesario coordinar las distintas partes del modelo f\u00edsico vistas en el apartado anterior. Para terminar con la explicaci\u00f3n de los componentes, su conexi\u00f3n con el programa mediante las entradas, implementado en el apartado de variables y setup() es el siguiente:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-8.png\" alt=\"\" class=\"wp-image-6001\" width=\"547\" height=\"118\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-8.png 789w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-8-300x65.png 300w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-8-768x166.png 768w\" sizes=\"auto, (max-width: 547px) 100vw, 547px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><strong> <\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>4. Software <\/strong><\/p>\n\n\n\n<p>En cuanto a la parte software del proyecto, este se divide en dos grandes funcionalidades recogidas en una sentencia switch:<\/p>\n\n\n\n<p> &#8211; Un traductor espa\u00f1ol-Morse en el primer caso del switch. <\/p>\n\n\n\n<p>&#8211; Un traductor Morse-espa\u00f1ol en el segundo caso del switch. <\/p>\n\n\n\n<p>Para permitir al usuario elegir el uso deseado del proyecto, se ha creado una funci\u00f3n ElegirMod(), que usa el Serial.parseInt() para asignar a la variable \u201cmodo\u201d (que rige el switch()) la entrada del usuario. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>4.1 Traductor Espa\u00f1ol-Morse<\/strong><\/p>\n\n\n\n<p> La explicaci\u00f3n de la modalidad espa\u00f1ol-Morse se dividir\u00e1 en los siguientes apartados:<\/p>\n\n\n\n<p> &#8211; Variables <\/p>\n\n\n\n<p>&#8211; Funciones<\/p>\n\n\n\n<p> &#8211; Main loop <\/p>\n\n\n\n<p>-Salida por LCD <\/p>\n\n\n\n<p>Se comenzar\u00e1 con las variables donde:<\/p>\n\n\n\n<p> \u2022 data: Es donde se guarda la entrada, es decir, la palabra que se quiere pasar a morse. \u2022 len: Longitud de la palabra de entrada. <\/p>\n\n\n\n<p>\u2022 ch: Car\u00e1cter que se ir\u00e1 traduciendo a morse. A continuaci\u00f3n, las funciones desarrolladas para el funcionamiento de este modo: <\/p>\n\n\n\n<p>\u2022 l\u00ednea(): Activa el LED y el zumbador el tiempo de una l\u00ednea en morse, adem\u00e1s de imprimirlo por pantalla.<\/p>\n\n\n\n<p> \u2022 punto(): Activa el LED y el zumbador el tiempo de una l\u00ednea en morse, adem\u00e1s de imprimirlo por pantalla. <\/p>\n\n\n\n<p>\u2022 Funciones de las letras y n\u00fameros (A(), B(), \u2026): Cada letra (A-Z) y n\u00famero (0-9) tienen una funci\u00f3n propia con su combinaci\u00f3n correspondiente de l\u00edneas y puntos, representados con las funciones anteriores y separadas por una ligera espera (delay_unitario).<\/p>\n\n\n\n<p> \u2022 StringAMorse(): Funci\u00f3n que convierte el String data en caracteres separados utilizando un bucle for() que se repite en funci\u00f3n de la longitud de la palabra, para aplicar la funci\u00f3n morse() a cada car\u00e1cter y traducirlos. <\/p>\n\n\n\n<p>\u2022 morse(): Un bloque de sentencias if()\u2026else{} que relacionan el car\u00e1cter evaluado con su funci\u00f3n de representaci\u00f3n correspondiente. Una vez explicadas las funciones, se pasar\u00e1 al loop principal, donde lo \u00fanico que se hace es recibir la entrada del usuario con Serial.readStringUntil() y se aplicar\u00e1 la funci\u00f3n StringAMorse() comentada anteriormente. <\/p>\n\n\n\n<p>Ahora se pasar\u00e1 a ense\u00f1ar el caso del main loop que corresponde a este modo, donde simplemente se toma la entrada de Serial y se aplica la funci\u00f3n StringAMorse(). Terminado de explicar el funcionamiento principal de la opci\u00f3n, se comentar\u00e1n los cambios hechos al c\u00f3digo inicial (im\u00e1genes anteriores) para implementar la salida por pantalla utilizando el dispositivo LCD, que muestra tanto la entrada del usuario como la salida utilizando las funciones de la librer\u00eda. <\/p>\n\n\n\n<p>Esta estructura se repite en el caso de la funci\u00f3n l\u00ednea(). La variable \u201clongitudM\u201d cuenta cada punto\/l\u00ednea y se reinicia con cada nueva palabra. Adem\u00e1s, se han introducido espacios entre letras para mayor claridad, y se ha se\u00f1alado tambi\u00e9n la entrada y salida.<\/p>\n\n\n\n<p>4.2 Traductor Morse-espa\u00f1ol<\/p>\n\n\n\n<p> La explicaci\u00f3n de la modalidad Morse-espa\u00f1ol se dividir\u00e1 en los siguientes apartados:<\/p>\n\n\n\n<p> &#8211; Variables<\/p>\n\n\n\n<p> &#8211; Funciones<\/p>\n\n\n\n<p> &#8211; Main loop <\/p>\n\n\n\n<p>Se muestra el punto por la pantalla LCD. Si el punto no se va a ver porque se sale de los 16 caracteres disponibles, se mueve la fila 2 una unidad para la izquierda con la funci\u00f3n scrollDisplayLeft. La variable \u201clongitudM\u201d cuenta cada punto\/l\u00ednea y se reinicia con cada nueva palabra.<\/p>\n\n\n\n<p> -Salida con LCD Se comenzar\u00e1 con las variables cuyas funciones son: <\/p>\n\n\n\n<p>\u2022 data2: Es donde se guarda como \u201cString\u201d la combinaci\u00f3n de puntos y l\u00edneas que entran por el pulsador. <\/p>\n\n\n\n<p>\u2022 min_delay: El tiempo m\u00ednimo que debe estar pulsado el bot\u00f3n antes de que se tome como entrada (tanto punto como l\u00ednea). <\/p>\n\n\n\n<p>\u2022 t_presionado: Tiempo que se mantiene presionado el bot\u00f3n. <\/p>\n\n\n\n<p>\u2022 t_actual: Tiempo en el momento de ejecuci\u00f3n. <\/p>\n\n\n\n<p>\u2022 t_instante_presionado: Momento en el que se ha pulsado el bot\u00f3n. A continuaci\u00f3n, se explicar\u00e1n las funciones creadas para la traducci\u00f3n, siendo estas: <\/p>\n\n\n\n<p>\u2022 MakeString(): Esta funci\u00f3n se encarga de recibir el tiempo que el bot\u00f3n ha sido presionado y, con una estructura de sentencias if(), lo convierte en un char. En el caso de que el t_presionado sea menor a 0.6s, se toma como punto mientras que, si este es mayor, se toma como l\u00ednea. <\/p>\n\n\n\n<p>\u2022 Morse_decod(): Esta funci\u00f3n se encarga de, dado el c\u00f3digo en morse obtenido, convertirlo en la letra o n\u00famero correspondiente y mostrarlo por pantalla. Se analizar\u00e1 paso a paso; MorseCode[] es un array que contiene las letras del alfabeto y los n\u00fameros en morse, guardados como un String. A continuaci\u00f3n, para recorrer el array, se usar\u00e1 un bucle while: El while se ejecuta hasta que ocurre uno de los dos siguientes casos: <\/p>\n\n\n\n<p>1. El c\u00f3digo que contiene la entrada data2 coincide con alg\u00fan miembro del array MorseCode[]. <\/p>\n\n\n\n<p>2. Se llega al final del array sin haber encontrado coincidencia. <\/p>\n\n\n\n<p>En el primero de los posibles eventos, una sentencia if() averigua si es una letra o un n\u00famero utilizando el tama\u00f1o del array y la posici\u00f3n actual en el array (i) y lo escribe por pantalla. Esto es posible gracias a que los n\u00fameros est\u00e1n al final del array. <\/p>\n\n\n\n<p>El segundo de los casos se trata como una excepci\u00f3n, mostrando por pantalla un mensaje que informa que el c\u00f3digo no existe o no est\u00e1 recogido en el \u201cabecedario\u201d morse que implementa el proyecto, y se trata con otro if().<\/p>\n\n\n\n<p> Una vez explicadas las funciones utilizadas, se har\u00e1 un an\u00e1lisis del funcionamiento del loop(). El modo de funcionamiento MORSE-espa\u00f1ol est\u00e1 implementado en el \u201ccase 2\u201d de la sentencia switch(). El if() asegura que se informe al usuario de que est\u00e1 en el segundo modo de uso, y solo se ejecuta en la primera instancia del bucle. La mayor parte del bucle principal se encarga de obtener el tiempo que el bot\u00f3n est\u00e1 presionado mediante operaciones aritm\u00e9ticas con las variables \u201ct_\u201d, e ir llamando a MakeString() para convertir este tiempo presionado a String, as\u00ed como encender y apagar el led para mayor claridad en el uso. Cuando el bot\u00f3n est\u00e1 pulsado: <\/p>\n\n\n\n<p>1. t_instante_presionado = tiempo actual en ejecuci\u00f3n. (Usando la funci\u00f3n milis()) <\/p>\n\n\n\n<p>Cuando el bot\u00f3n no est\u00e1 pulsado: <\/p>\n\n\n\n<p>2. t_actual = tiempo actual en ejecuci\u00f3n. (Como ha pasado tiempo, t_instante_presionado no es igual a t_actual) <\/p>\n\n\n\n<p>3. t_presionado = t_actual-t_instante_presionado. <\/p>\n\n\n\n<p>4. Se aplica MakeString(). Finalmente, para tomar m\u00e1s de un punto o una l\u00ednea, se ha introducido un while() que permite volver a introducir entrada a no ser que pasen 1.8 segundos. V\u00e9ase: Ahora se analizar\u00e1n los a\u00f1adidos al c\u00f3digo que permiten la salida en la pantalla LCD:<\/p>\n\n\n\n<p> \u2022 Primero se muestra el mensaje de aviso para que el usuario sepa el modo que ha elegido.<\/p>\n\n\n\n<p> \u2022 Se van mostrando los puntos y l\u00edneas a medida que son introducidas por el usuario. <\/p>\n\n\n\n<p>\u2022 Se muestra la traducci\u00f3n en la funci\u00f3n Morse_decod().<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong> 5.Problemas<\/strong><\/p>\n\n\n\n<p> Entre los problemas que surgieron a lo largo del trabajo, los m\u00e1s notables son: <\/p>\n\n\n\n<p>\u2022 Dificultad a la hora de conectar tantas piezas y los cables que conllevan. Soluci\u00f3n: Reconectar meticulosamente los componentes uno a uno para encontrar los que estaban mal conectados, algo que en los prototipos finales del proyecto tom\u00f3 una cantidad considerable de tiempo. <\/p>\n\n\n\n<p>\u2022 Complicaciones a la hora de mostrar mensajes largos que ocupen m\u00e1s que el tama\u00f1o de la pantalla LCD. Soluci\u00f3n: La funci\u00f3n scrollDisplayLeft() combinada con un contador constante que asegure que si la pantalla est\u00e1 llena esta se desplace a medida que el mensaje sigue apareciendo. <\/p>\n\n\n\n<p>\u2022 Encontrar la manera en la que detectar el tiempo que se mantiene pulsado el pulsador que hace de entrada para el caso 2. <\/p>\n\n\n\n<p>Soluci\u00f3n: El uso de la funci\u00f3n milis() para calcular el tiempo actual, as\u00ed como los c\u00e1lculos aritm\u00e9ticos realizados para averiguar el tiempo presionado, que a\u00fan resultando sencilla al final supuso al principio del proyecto un reto. <\/p>\n\n\n\n<p>\u2022 Dificultades a la hora de conseguir un dise\u00f1o f\u00edsico est\u00e9tico d\u00f3nde la presencia de la multitud de cables utilizados no resulte inc\u00f3moda. <\/p>\n\n\n\n<p>Soluci\u00f3n: La soluci\u00f3n parcial a la que se lleg\u00f3 fue una caja dise\u00f1ada para mantener fuera de la vista los cables a la vez que permite utilizar el proyecto. Fue un problema m\u00e1s dif\u00edcil de lo esperado dada la delicadeza con la que se tiene que proceder con los componentes fr\u00e1giles del hardware. <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>6. Resultado final <\/strong><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"672\" height=\"435\" src=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-9.png\" alt=\"\" class=\"wp-image-6002\" srcset=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-9.png 672w, https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-9-300x194.png 300w\" sizes=\"auto, (max-width: 672px) 100vw, 672px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Bibliograf\u00eda <\/strong><\/p>\n\n\n\n<p>Ar, B. (19 de febrero de 2017). Arduino desde cero. Obtenido de https:\/\/www.youtube.com\/watch?v=eBVvD85Ml2c&amp;list=PLkjnQ3NFTPnY1eNyLDGi547 gkVui1vyn2 <\/p>\n\n\n\n<p>Hern\u00e1ndez, L. d. (2017). SOS en Arduino, c\u00f3digo morse. Obtenido de https:\/\/programarfacil.com\/tutoriales\/fragmentos\/sos-en-arduino-codigo-morse\/ Fabio Nelli. (30 de julio de 2014).<\/p>\n\n\n\n<p> Sending values from PC to Arduino by serial communication. Obtenido de https:\/\/www.meccanismocomplesso.org\/en\/tutorial-sending-values-from-pc-toarduino-by-serial-communication<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>ANEXO<\/strong><\/p>\n\n\n\n<p>#define DEBUG(a) Serial.println(a);<\/p>\n\n\n\n<p>#include &nbsp; &nbsp; &nbsp; &nbsp;&lt;LiquidCrystal.h&gt;<\/p>\n\n\n\n<p>\/\/LiquidCrystal<\/p>\n\n\n\n<p>LiquidCrystal lcd(12, 11, 5, 4, 3, 2);<\/p>\n\n\n\n<p>\/\/HARDWARE<\/p>\n\n\n\n<p>const int led = 13;<\/p>\n\n\n\n<p>const int buz = 8;<\/p>\n\n\n\n<p>const int button2 = 7;<\/p>\n\n\n\n<p>\/\/VARIABLES GLOBALES<\/p>\n\n\n\n<p>int modo = 0;<\/p>\n\n\n\n<p>int loopInstances = 0;<\/p>\n\n\n\n<p>int delay_unitario = 250;<\/p>\n\n\n\n<p>\/\/ABC &#8212;&gt; MORSE<\/p>\n\n\n\n<p>String data;<\/p>\n\n\n\n<p>int len = 0;<\/p>\n\n\n\n<p>char ch;<\/p>\n\n\n\n<p>int longitudM = 0;<\/p>\n\n\n\n<p>\/\/MORSE &#8211;&gt; ABC<\/p>\n\n\n\n<p>String data2 = \u00ab\u00bb;<\/p>\n\n\n\n<p>unsigned long t_presionado = 0, t_actual, t_instante_presionado = 0; \/\/Press_Length<\/p>\n\n\n\n<p>int min_delay = 10;<\/p>\n\n\n\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n\n\n\n<p>\/\/&#8212;&#8211;Funciones ABC &#8212;&gt; MORSE&#8212;&#8211;<\/p>\n\n\n\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<\/p>\n\n\n\n<p>\/\/Funci\u00f3n que representa un punto en morse. Enciende el led y el buzzer<\/p>\n\n\n\n<p>void punto()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; lcd.print(\u00ab.\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; Serial.print(\u00ab.\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(led, HIGH);<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(buz, HIGH);<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(led, LOW);<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(buz, LOW);<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; longitudM++;<\/p>\n\n\n\n<p>&nbsp; &nbsp; if(longitudM&gt;16){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.scrollDisplayLeft(); &nbsp; &nbsp;<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/Funci\u00f3n que representa una l\u00ednea en morse. Enciende el led y el buzzer<\/p>\n\n\n\n<p>void linea()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; lcd.print(\u00ab-\u00ab);<\/p>\n\n\n\n<p>&nbsp; Serial.print(\u00ab-\u00ab);<\/p>\n\n\n\n<p>&nbsp; digitalWrite(led, HIGH);<\/p>\n\n\n\n<p>&nbsp; digitalWrite(buz, HIGH);<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario * 3);<\/p>\n\n\n\n<p>&nbsp; digitalWrite(led, LOW);<\/p>\n\n\n\n<p>&nbsp; digitalWrite(buz, LOW);<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; longitudM++;<\/p>\n\n\n\n<p>&nbsp; &nbsp; if(longitudM&gt;16){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.scrollDisplayLeft(); &nbsp; &nbsp;<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/A continuaci\u00f3n, creamos una funci\u00f3n que represente cada letra en su equivalente morse utilizando las funciones<\/p>\n\n\n\n<p>\/\/ \u00ablinea()\u00bb y \u00abpunto()\u00bb anteriores.<\/p>\n\n\n\n<p>void A() \/\/Letra A en morse<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void B() \/\/Letra B<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void C() \/\/Letra C<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void D()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void E()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void f()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void G()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void H()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void I()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void J()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void K()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void L()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void M()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void N()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void O()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void P()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void Q()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void R()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void S()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void T()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void U()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void V()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void W()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void X()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void Y()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void Z()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void uno()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void dos()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void tres()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void cuatro()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();;<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void cinco()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void seis()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void siete()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void ocho()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void nueve()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; punto();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void cero()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>&nbsp; &nbsp; linea();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(delay_unitario);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/morse(): Funci\u00f3n que toma el char y ve que letra es, para luego aplicarle<\/p>\n\n\n\n<p>\/\/el debido tratamiento<\/p>\n\n\n\n<p>void morse()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; if (ch == &#8216;A&#8217; || ch == &#8216;a&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; A();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;B&#8217; || ch == &#8216;b&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; B();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;C&#8217; || ch == &#8216;c&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; C();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;D&#8217; || ch == &#8216;d&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; D();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;E&#8217; || ch == &#8216;e&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; E();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;F&#8217; || ch == &#8216;f&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; f();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;G&#8217; || ch == &#8216;g&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; G();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;H&#8217; || ch == &#8216;h&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; H();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;I&#8217; || ch == &#8216;i&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; I();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;J&#8217; || ch == &#8216;j&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; J();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;K&#8217; || ch == &#8216;k&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; K();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;L&#8217; || ch == &#8216;l&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; L();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;M&#8217; || ch == &#8216;m&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; M();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;N&#8217; || ch == &#8216;n&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; N();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;O&#8217; || ch == &#8216;o&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; O();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;P&#8217; || ch == &#8216;p&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; P();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;Q&#8217; || ch == &#8216;q&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Q();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;R&#8217; || ch == &#8216;r&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; R();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;S&#8217; || ch == &#8216;s&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; S();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;T&#8217; || ch == &#8216;t&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; T();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;U&#8217; || ch == &#8216;u&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; U();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;V&#8217; || ch == &#8216;v&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; V();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;W&#8217; || ch == &#8216;w&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; W();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;X&#8217; || ch == &#8216;x&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; X();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;Y&#8217; || ch == &#8216;y&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Y();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;Z&#8217; || ch == &#8216;z&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Z();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;0&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; cero();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;1&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; uno();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;2&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; dos();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;3&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; tres();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;4&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; cuatro();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;5&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; cinco();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;6&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; seis();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;7&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; siete();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;8&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; ocho();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (ch == &#8216;9&#8217;)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; nueve();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/LLAMA A morse() POR CADA LETRA DEL STRING<\/p>\n\n\n\n<p>void StringAMorse()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; len = data.length();<\/p>\n\n\n\n<p>&nbsp; &nbsp; for (int i = 0; i &lt; len; i++)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; ch = data.charAt(i);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; morse();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; longitudM++;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; if(longitudM&gt;16){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.scrollDisplayLeft();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p>\/\/&#8212;&#8212;Funciones MORSE&#8212;&gt;ABC&#8212;&#8212;&#8212;&#8211;<\/p>\n\n\n\n<p>\/\/&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<\/p>\n\n\n\n<p>\/\/Funcion que convierte la entrada por el bot\u00f3n en morse (puntos o l\u00edneas)<\/p>\n\n\n\n<p>char MakeString()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; if (t_presionado &lt; (delay_unitario*3) &amp;&amp; t_presionado &gt; 50)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.print(\u00ab.\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; return &#8216;.&#8217;; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/Si se presiona el bot\u00f3n por menos de 0.6s es un punto<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; else if (t_presionado &gt; (delay_unitario*3))<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.print(\u00ab-\u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; return &#8216;-&#8216;; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;\/\/Si se presiona el bot\u00f3n por m\u00e1s de 0.6s es una l\u00ednea<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/Funci\u00f3n que pasa por todo el abecedario en morse para encontrar coincidencia<\/p>\n\n\n\n<p>void Morse_decod()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp; static String morseCode[] = {\u00ab.-\u00ab, \u00ab-&#8230;\u00bb, \u00ab-.-.\u00bb, \u00ab-..\u00bb, \u00ab.\u00bb, \u00ab..-.\u00bb, \u00ab&#8211;.\u00bb, \u00ab&#8230;.\u00bb, \/\/Todo el ABC en morse<\/p>\n\n\n\n<p>&nbsp; &nbsp; \u00ab..\u00bb, \u00ab.&#8212;\u00ab, \u00ab-.-\u00ab, \u00ab.-..\u00bb, \u00ab&#8211;\u00ab, \u00ab-.\u00bb, \u00ab&#8212;\u00ab, \u00ab.&#8211;.\u00bb, \u00ab&#8211;.-\u00ab,<\/p>\n\n\n\n<p>&nbsp; &nbsp; \u00ab.-.\u00bb, \u00ab&#8230;\u00bb, \u00ab-\u00ab, \u00ab..-\u00ab, \u00ab&#8230;-\u00ab, \u00ab.&#8211;\u00ab, \u00ab-..-\u00ab, \u00ab-.&#8211;\u00ab, \u00ab&#8211;..\u00bb,\u00bb&#8212;&#8211;\u00ab,\u00bb.&#8212;- \u00ab, \u00ab..&#8212;\u00ab, \u00ab&#8230;&#8211;\u00ab,<\/p>\n\n\n\n<p>&nbsp; &nbsp; \u00ab&#8230;.-\u00ab, \u00ab&#8230;..\u00bb, \u00ab-&#8230;.\u00bb,\u00bb&#8211;&#8230;\u00bb, \u00ab&#8212;..\u00bb, \u00ab&#8212;-.\u00bb ,\u00bb!\u00bb};<\/p>\n\n\n\n<p>&nbsp; &nbsp; int n = 0;<\/p>\n\n\n\n<p>&nbsp; &nbsp; int i = 0;<\/p>\n\n\n\n<p>&nbsp; &nbsp; \/\/lcd.clear();<\/p>\n\n\n\n<p>&nbsp; &nbsp; while (morseCode[i] != \u00ab!\u00bb)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; if (morseCode[i] == data2)<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00abEntrada: \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.println(data2);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00abTraduccion: \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lcd.print(\u00abTraduccion: \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/LETRAS<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(i&lt;26){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lcd.print(char(&#8216;A&#8217;+ i));<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print(char(&#8216;A&#8217; + i));<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.println(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \/\/N\u00daMEROS<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(i&gt;=26){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; lcd.print(n);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print(n);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; if(i&gt;25){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; n = n +1;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; i++;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; if (morseCode[i] == \u00ab!\u00bb)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.print(\u00abNO ENCONTRADO\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.println(\u00ab\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.println(\u00abEl codigo solicitado no existe o no esta incluido en la base de datos del programa!\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; data2 = \u00ab\u00bb;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>\/\/Funci\u00f3n para dar valor a \u00abmodo\u00bb y por tanto elegir como se usar\u00e1 el programa<\/p>\n\n\n\n<p>void ElegirModo()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; if(Serial.available())<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; modo = Serial.parseInt();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; DEBUG((int)modo);<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void setup()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; &nbsp;Serial.begin(9600);<\/p>\n\n\n\n<p>&nbsp; &nbsp;pinMode(led, OUTPUT); \/\/LED<\/p>\n\n\n\n<p>&nbsp; &nbsp;pinMode(buz, OUTPUT); \/\/BUZZER<\/p>\n\n\n\n<p>&nbsp; &nbsp;pinMode(button2, INPUT_PULLUP); \/\/BOT\u00d3N<\/p>\n\n\n\n<p>&nbsp; &nbsp;Serial.println(\u00abElige modo : 1)ABC&#8211;&gt;MORSE || 2)MORSE&#8211;&gt;ABC\u00bb);<\/p>\n\n\n\n<p>&nbsp; \/\/LCD<\/p>\n\n\n\n<p>&nbsp; lcd.begin(16, 2); \/\/Inicializamos el display configurando 16 columnas por 2 filas<\/p>\n\n\n\n<p>&nbsp; lcd.setCursor(0,0); \/\/Ponemos el cursor en la primera fila a la izquierda<\/p>\n\n\n\n<p>&nbsp; lcd.print(\u00abInicializando&#8230;\u00bb); \/\/Imprimimos un mensaje inicial<\/p>\n\n\n\n<p>&nbsp; delay(2000); \/\/Esperamos 2 segundos<\/p>\n\n\n\n<p>&nbsp; lcd.clear(); \/\/Borramos lo que pone a la pantalla<\/p>\n\n\n\n<p>&nbsp; lcd.setCursor(0,0);<\/p>\n\n\n\n<p>&nbsp; lcd.print(\u00abElige modo:\u00bb);<\/p>\n\n\n\n<p>&nbsp; delay(2000);<\/p>\n\n\n\n<p>&nbsp; lcd.clear();<\/p>\n\n\n\n<p>&nbsp; lcd.setCursor(0,0);<\/p>\n\n\n\n<p>&nbsp; lcd.print(\u00ab1)ABC&#8211;&gt;MORSE\u00bb);<\/p>\n\n\n\n<p>&nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; lcd.print(\u00ab2)MORSE&#8211;&gt;ABC\u00bb);<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>void loop()<\/p>\n\n\n\n<p>{<\/p>\n\n\n\n<p>&nbsp; if(loopInstances == 0){<\/p>\n\n\n\n<p>&nbsp; &nbsp; ElegirModo();<\/p>\n\n\n\n<p>&nbsp; }<\/p>\n\n\n\n<p>switch(modo){<\/p>\n\n\n\n<p>&nbsp; case 1:<\/p>\n\n\n\n<p>&nbsp; if(loopInstances == 0){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;lcd.clear();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;lcd.print(\u00abPRIMER MODO\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;Serial.println(\u00abHAS SELECCIONADO EL PRIMER MODO\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;loopInstances = loopInstances+1;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;delay(1000);<\/p>\n\n\n\n<p>&nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; lcd.clear();<\/p>\n\n\n\n<p>&nbsp; &nbsp; longitudM = 0;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;while(Serial.available())<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;{<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; data = Serial.readStringUntil(&#8216;\\n&#8217;);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; DEBUG(data);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(data);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; lcd.print(data);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; Serial.print(\u00bb = \u00ab);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; StringAMorse();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;}<\/p>\n\n\n\n<p>&nbsp; \/*for(int f = 0; f&lt;(longitudM-16); f++){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; &nbsp; lcd.setCursor(0,1);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp; lcd.scrollDisplayLeft();<\/p>\n\n\n\n<p>&nbsp; }*\/<\/p>\n\n\n\n<p>&nbsp; break;<\/p>\n\n\n\n<p>&nbsp; case 2:<\/p>\n\n\n\n<p>&nbsp; if(loopInstances == 0){<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;lcd.clear();<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;lcd.print(\u00abSEGUNDO MODO\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;Serial.println(\u00abHAS SELECCIONADO EL SEGUNDO MODO\u00bb);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;loopInstances = loopInstances+1;<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;delay(1000);<\/p>\n\n\n\n<p>&nbsp; &nbsp; &nbsp;lcd.clear();<\/p>\n\n\n\n<p>&nbsp; }<\/p>\n\n\n\n<p>&nbsp; lcd.setCursor(0,0);<\/p>\n\n\n\n<p>&nbsp; lcd.print(\u00abEntrada:\u00bb);<\/p>\n\n\n\n<p>&nbsp; lcd.print(data2);<\/p>\n\n\n\n<p>&nbsp; label:<\/p>\n\n\n\n<p>&nbsp; while (digitalRead(button2) == HIGH) {}<\/p>\n\n\n\n<p>&nbsp; ;<\/p>\n\n\n\n<p>&nbsp; &nbsp; t_instante_presionado = millis();<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(led, HIGH);<\/p>\n\n\n\n<p>&nbsp; &nbsp; while (digitalRead(button2) == LOW) {}<\/p>\n\n\n\n<p>&nbsp; &nbsp; t_actual = millis();<\/p>\n\n\n\n<p>&nbsp; &nbsp; digitalWrite(led, LOW);<\/p>\n\n\n\n<p>&nbsp; &nbsp; t_presionado = t_actual &#8211; t_instante_presionado;<\/p>\n\n\n\n<p>&nbsp; &nbsp; if (t_presionado &gt; min_delay)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; data2 += MakeString();<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; while ((millis() &#8211; t_actual) &lt; (delay_unitario * 3))<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; if (digitalRead(button2) == LOW)<\/p>\n\n\n\n<p>&nbsp; &nbsp; {<\/p>\n\n\n\n<p>&nbsp; &nbsp; goto label;<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; }<\/p>\n\n\n\n<p>&nbsp; &nbsp; Morse_decod();<\/p>\n\n\n\n<p>&nbsp; &nbsp; delay(1500);<\/p>\n\n\n\n<p>&nbsp; &nbsp; lcd.clear();<\/p>\n\n\n\n<p>&nbsp; break;<\/p>\n\n\n\n<p>}<\/p>\n\n\n\n<p>}<\/p>\n\n\n","protected":false},"excerpt":{"rendered":"<p>1.Introducci\u00f3n Si desea consultar el c\u00f3digo est\u00e1 en el ANEXO al final del documento Para este proyecto avanzado de la asignatura de DSE, el proyecto que se va a hacer es un traductor del&#46;&#46;&#46;<\/p>\n","protected":false},"author":60,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-5995","post","type-post","status-publish","format-standard","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>Traductor bidireccional Espa\u00f1ol-Morse - 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\/traductor-bidireccional-espanol-morse\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Traductor bidireccional Espa\u00f1ol-Morse - Proyectos con Arduino.\" \/>\n<meta property=\"og:description\" content=\"1.Introducci\u00f3n Si desea consultar el c\u00f3digo est\u00e1 en el ANEXO al final del documento Para este proyecto avanzado de la asignatura de DSE, el proyecto que se va a hacer es un traductor del&#046;&#046;&#046;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/\" \/>\n<meta property=\"og:site_name\" content=\"Proyectos con Arduino.\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-17T19:49:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-12-17T19:49:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png\" \/>\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=\"27 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\\\/traductor-bidireccional-espanol-morse\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/\"},\"author\":{\"name\":\"\",\"@id\":\"\"},\"headline\":\"Traductor bidireccional Espa\u00f1ol-Morse\",\"datePublished\":\"2022-12-17T19:49:49+00:00\",\"dateModified\":\"2022-12-17T19:49:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/\"},\"wordCount\":5450,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/image-4.png\",\"articleSection\":[\"Proyectos\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/\",\"name\":\"Traductor bidireccional Espa\u00f1ol-Morse - Proyectos con Arduino.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/image-4.png\",\"datePublished\":\"2022-12-17T19:49:49+00:00\",\"dateModified\":\"2022-12-17T19:49:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/image-4.png\",\"contentUrl\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2022\\\/12\\\/image-4.png\",\"width\":109,\"height\":122},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/traductor-bidireccional-espanol-morse\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.etsii.urjc.es\\\/dseytr\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Traductor bidireccional Espa\u00f1ol-Morse\"}]},{\"@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":"Traductor bidireccional Espa\u00f1ol-Morse - 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\/traductor-bidireccional-espanol-morse\/","og_locale":"es_ES","og_type":"article","og_title":"Traductor bidireccional Espa\u00f1ol-Morse - Proyectos con Arduino.","og_description":"1.Introducci\u00f3n Si desea consultar el c\u00f3digo est\u00e1 en el ANEXO al final del documento Para este proyecto avanzado de la asignatura de DSE, el proyecto que se va a hacer es un traductor del&#46;&#46;&#46;","og_url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/","og_site_name":"Proyectos con Arduino.","article_published_time":"2022-12-17T19:49:49+00:00","article_modified_time":"2022-12-17T19:49:51+00:00","og_image":[{"url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"","Tiempo de lectura":"27 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#article","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/"},"author":{"name":"","@id":""},"headline":"Traductor bidireccional Espa\u00f1ol-Morse","datePublished":"2022-12-17T19:49:49+00:00","dateModified":"2022-12-17T19:49:51+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/"},"wordCount":5450,"commentCount":0,"publisher":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#organization"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png","articleSection":["Proyectos"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/","name":"Traductor bidireccional Espa\u00f1ol-Morse - Proyectos con Arduino.","isPartOf":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#primaryimage"},"image":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png","datePublished":"2022-12-17T19:49:49+00:00","dateModified":"2022-12-17T19:49:51+00:00","breadcrumb":{"@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#primaryimage","url":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png","contentUrl":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-content\/uploads\/sites\/8\/2022\/12\/image-4.png","width":109,"height":122},{"@type":"BreadcrumbList","@id":"https:\/\/blogs.etsii.urjc.es\/dseytr\/traductor-bidireccional-espanol-morse\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.etsii.urjc.es\/dseytr\/"},{"@type":"ListItem","position":2,"name":"Traductor bidireccional Espa\u00f1ol-Morse"}]},{"@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\/5995","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\/60"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/comments?post=5995"}],"version-history":[{"count":1,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5995\/revisions"}],"predecessor-version":[{"id":6003,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/posts\/5995\/revisions\/6003"}],"wp:attachment":[{"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/media?parent=5995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/categories?post=5995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.etsii.urjc.es\/dseytr\/wp-json\/wp\/v2\/tags?post=5995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}