{"id":1170,"date":"2018-02-27T12:39:22","date_gmt":"2018-02-27T17:39:22","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/edelros\/?p=1170"},"modified":"2018-09-10T10:29:07","modified_gmt":"2018-09-10T15:29:07","slug":"morse-codec-led","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/edelros\/morse-codec-led\/","title":{"rendered":"Morse Codec - LED"},"content":{"rendered":"<p>Codificador texto a morse.<br \/>\nUsando un LED para la se\u00f1al morse. El led mas sencillo de usar es el incorporado en el Arduino.<\/p>\n<p>Tareas por realizar:<\/p>\n<ul>\n<li>usar un tono en un parlante o buzzer\/zumbador.<\/li>\n<li>usar un laser para transmitir la se\u00f1al a distancias con linea de vista<\/li>\n<li>usar un transmisor inal\u00e1mbrico para transmitir la se\u00f1al<\/li>\n<li>Probar con un Xbee<\/li>\n<li>analizar la secuencia de datos con un modelo de Cadena de Markov<\/li>\n<\/ul>\n<pre>\/*  CODificador morse\r\n *   recibe un mensaje\r\n *   equivale: estructura de datos char y string\r\n *   funciones: codificar y decodificar\r\n *\/\r\n\r\n\/\/ PIN para el LED, led integrado = 13\r\n#define PIN_LED 13\r\n\/\/Duraci\u00f3n de un s\u00edmbolo en  ms\r\n#define DURACION 250\r\n\r\nvoid setup(){\r\n  pinMode( PIN_LED, OUTPUT );\r\n  digitalWrite( PIN_LED, LOW );\r\n}\r\n\r\nvoid loop(){\r\n  String mensaje = \"SOS \";\r\n  String mensajemorse;\r\n  char simbolo;\r\n  int n;\r\n  mensajemorse = codifica(mensaje);\r\n  \/\/ Transmite el mensaje\r\n  n = mensajemorse.length();\r\n  for(int i=0; i&lt;=n; i++){\r\n    simbolo = mensajemorse[i];\r\n    morseLedTx(simbolo);\r\n  }\r\n}\r\n\r\nvoid morseLedTx(char simbolo){\r\n    if (simbolo == '.'){\r\n      digitalWrite( PIN_LED, HIGH );\r\n      delay( DURACION );\r\n      digitalWrite( PIN_LED, LOW );\r\n      delay( DURACION );\r\n    }\r\n    if (simbolo == '-'){\r\n      digitalWrite( PIN_LED, HIGH );\r\n      delay( DURACION*3 );\r\n      digitalWrite( PIN_LED, LOW );\r\n      delay( DURACION );\r\n    }\r\n    if (simbolo == ' ') {\r\n      delay( DURACION );\r\n    }\r\n}\r\n\r\n\/\/ Equivalente letra a c\u00f3digo Morse. Estructura de datos\r\nstatic const struct {const char letra, *codigo;} equivale[] =\r\n{\r\n  { 'A', \".-\" }, { 'B', \"-...\" }, { 'C', \"-.-.\" }, \r\n  { 'D', \"-..\" }, { 'E', \".\" }, { 'F', \"..-.\" }, \r\n  { 'G', \"--.\" }, { 'H', \"....\" }, { 'I', \"..\" },\r\n  { 'J', \".---\" }, { 'K', \"-.-\" }, { 'L', \".-..\" },\r\n  { 'M', \"--\" }, { 'N', \"-.\" }, { 'O', \"---\" }, \r\n  { 'P', \".--.\" }, { 'Q', \"--.-\" }, { 'R', \".-.\" },\r\n  { 'S', \"...\" }, { 'T', \"-\" }, { 'U', \"..-\" }, \r\n  { 'V', \"...-\" }, { 'W', \".--\" }, { 'X', \"-..-\" },\r\n  { 'Y', \"-.--\" }, { 'Z', \"--..\" }, \r\n  { ' ', \" \" },   \/\/espacio entre palabras \r\n  { '1', \".----\" }, { '2', \"..---\" }, { '3', \"...--\" },\r\n  { '4', \"....-\" }, { '5', \".....\" }, { '6', \"-....\" }, \r\n  { '7', \"--...\" }, { '8', \"---..\" }, { '9', \"----.\" }, \r\n  { '0', \"-----\" },\r\n  { '.', \".\u2013.\u2013.\u2013\" }, { ',', \"--..--\" }, { '?', \"..--..\" },\r\n  { '!', \"-.-.--\" }, { ':', \"---...\" }, { ';', \"-.-.-.\" }, \r\n  { '(', \"-.--.\" }, { ')', \"-.--.-\" }, { '\"', \".-..-.\" },\r\n  { '@', \".--.-.\" }, { '&amp;', \".-...\" },\r\n};\r\n\r\nString codifica(String mensaje){\r\n  String mensajemorse = \"\";\r\n  int i, j, n, m;\r\n  bool encontre;\r\n  n = mensaje.length();\r\n  m = (sizeof equivale \/ sizeof *equivale);\r\n  for( i = 0; i&lt;n; i++ ){\r\n    encontre = 0;\r\n    j=0;\r\n    while(j&lt;m and encontre==0){\r\n      if(toupper(mensaje[i]) == equivale[j].letra){\r\n        mensajemorse += equivale[j].codigo;\r\n        encontre=1;\r\n       }\r\n      j++;\r\n    }\r\n    mensajemorse += \" \"; \/\/separador de caracteres\r\n  }\r\n  return mensajemorse;  \r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Codificador texto a morse. Usando un LED para la se\u00f1al morse. El led mas sencillo de usar es el incorporado en el Arduino. Tareas por realizar: usar un tono en un parlante o buzzer\/zumbador. usar un laser para transmitir la se\u00f1al a distancias con linea de vista usar un transmisor inal\u00e1mbrico para transmitir la se\u00f1al &hellip; <a href=\"https:\/\/blog.espol.edu.ec\/edelros\/morse-codec-led\/\" class=\"more-link\">Sigue leyendo <span class=\"screen-reader-text\">Morse Codec - LED<\/span><\/a><\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1293406],"tags":[],"class_list":["post-1170","post","type-post","status-publish","format-standard","hentry","category-morse"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1170","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/comments?post=1170"}],"version-history":[{"count":5,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1170\/revisions"}],"predecessor-version":[{"id":1187,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/posts\/1170\/revisions\/1187"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/media?parent=1170"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/categories?post=1170"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/edelros\/wp-json\/wp\/v2\/tags?post=1170"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}