{"id":127,"date":"2017-02-12T11:05:56","date_gmt":"2017-02-12T11:05:56","guid":{"rendered":"http:\/\/escueladefrikis.com\/?p=127"},"modified":"2017-02-12T11:05:56","modified_gmt":"2017-02-12T11:05:56","slug":"logs-trazas-arduino-esta-programa","status":"publish","type":"post","link":"https:\/\/escueladefrikis.com\/index.php\/2017\/02\/12\/logs-trazas-arduino-esta-programa\/","title":{"rendered":"Logs y trazas en Arduino, \u00bfqu\u00e9 est\u00e1 haciendo mi programa?"},"content":{"rendered":"<p>Uno de los mayores retos a los que se enfrenta un programador es encontrar los errores cuando tu programa no hace lo que se supone que deber\u00eda de hacer. Si a esto le a\u00f1adimos una placa con la que hacemos experimentos electr\u00f3nicos pues entonces el problema es a\u00fan mayor: \u00bfhe conectado\u00a0correctamente los pines? \u00bfpor qu\u00e9 no se enciende el <a href=\"https:\/\/www.escueladefrikis.com\/2017\/01\/30\/diodos-y-leds\/\">LED<\/a>\/Motor\/etc.?<\/p>\n<p>Una manera relativamente sencilla es, cuando nuestro programa o en este caso nuestra placa hace algo, escribir una l\u00ednea indicando qu\u00e9 estamos haciendo. A esto com\u00fanmente se le conoce como tracear un programa o escribir traza o log (\u00ab<em><a href=\"http:\/\/www.wordreference.com\/es\/translation.asp?tranword=trace\" target=\"_blank\">trace<\/a><\/em>\u00bb en ingl\u00e9s significa \u00ab<em>seguir el rastro<\/em>\u00ab).\u00a0En este post vamos a ver como tracear un programa ejecutado en nuestra placa.<\/p>\n<p><!--more--><\/p>\n<h3>Escribir traza al puerto serie<\/h3>\n<p>Nuestro Arduino est\u00e1 conectado a nuestro ordenador por un puerto serie. Con este puerto enviamos nuestro programa a la placa, pero en realidad una vez enviado el puerto est\u00e1 libre, as\u00ed que lo podemos utilizar tanto para\u00a0enviar datos desde la placa como para recibir. En este caso desde la placa nos interesa escribir en el puerto serie.<\/p>\n<p>Serial es un objeto que representa el puerto serie y para gestionar las comunicaciones con el puerto serie es el que vamos a utilizar. Vamos a ver algunos de sus m\u00e9todos pero los ten\u00e9is todos aqu\u00ed: <a href=\"https:\/\/www.arduino.cc\/en\/reference\/serial\" target=\"_blank\">referencia de Serial (puerto serie)<\/a>.<\/p>\n<p>Para que nuestro programa escriba en el puerto serie:<\/p>\n<ul>\n<li>Inicializamos el puerto serie dentro de\u00a0<span style=\"font-family: 'courier new', courier, monospace;\">setup()<\/span>\u00a0ejecutando la sentencia <span style=\"font-family: 'courier new', courier, monospace;\"><strong>Serial.begin<\/strong>(velocidad_baudios)<\/span>.<\/li>\n<li>Cuando queramos escribir traza, ejecutamos la sentencia <span style=\"font-family: 'courier new', courier, monospace;\"><strong>Serial.println<\/strong>(cadena)<\/span>.<\/li>\n<\/ul>\n<pre>void setup() {\n Serial.begin(9600);\n}\n\nvoid loop() {\n Serial.println(\"Hola caracola\");\n delay(1000);\n}<\/pre>\n<h3>Leer la traza del programa en el puerto serie<\/h3>\n<p>Nuestro programa est\u00e1 escribiendo traza en el puerto serie, \u00bfc\u00f3mo leemos la traza?.<\/p>\n<p>El Arduino IDE tiene una herramienta que se llama \u00abMonitor serie\u00bb que precisamente sirve para leer el puerto serie. Para ejecutarlo:<\/p>\n<figure id=\"attachment_129\" aria-describedby=\"caption-attachment-129\" style=\"width: 521px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-129\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/02\/monitor_serie_menu-1.gif\" alt=\"C\u00f3mo ejecutar el monitor serie\" width=\"521\" height=\"331\" \/><figcaption id=\"caption-attachment-129\" class=\"wp-caption-text\">C\u00f3mo ejecutar el monitor serie<\/figcaption><\/figure>\n<p>Herramientas &gt;&gt; Monitor serie (Ctrl+May\u00fas+M)<\/p>\n<p>Y el resultado del programa anterior ser\u00eda el siguiente:<\/p>\n<figure id=\"attachment_130\" aria-describedby=\"caption-attachment-130\" style=\"width: 732px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-130\" src=\"https:\/\/escueladefrikis.com\/wp-content\/uploads\/2017\/02\/monitor_serie-1.gif\" alt=\"Ejemplo monitor serie\" width=\"732\" height=\"370\" \/><figcaption id=\"caption-attachment-130\" class=\"wp-caption-text\">Ejemplo monitor serie<\/figcaption><\/figure>\n<p>Este ejemplo, aunque simple, os ense\u00f1a c\u00f3mo escribir una traza y ver qu\u00e9 est\u00e1 haciendo nuestra placa: cada vez que vayamos a hacer una acci\u00f3n (como encender un LED) escribimos en traza \u00abEncendiendo LED\u00bb sabemos que estamos realizando esa acci\u00f3n y podemos seguir el flujo de ejecuci\u00f3n de nuestro programa en la placa.<\/p>\n<h3>Velocidad del puerto serie<\/h3>\n<p>\u00bfQu\u00e9 es exactamente un puerto serie? Pues es un puerto de entrada y salida en el que la informaci\u00f3n se transmite secuencialmente: primero un dato de informaci\u00f3n, despu\u00e9s otro dato, etc.<\/p>\n<p>Los datos que se tienen que transmitir se convierten a s\u00edmbolos. En comunicaciones digitales tenemos 2 s\u00edmbolos: HIGH (+5 voltios) y LOW (0 voltios) y por tanto un s\u00edmbolo equivale a un bit.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/4\/47\/Puerto_serie_Rs232.png\" alt=\"Comunicaci\u00f3n puerto serie\" \/><\/p>\n<p>Para poder distinguir el comienzo de un dato se suele marcar el comienzo y final para que el receptor se pueda sincronizar.<\/p>\n<p>Un baudio equivale a un s\u00edmbolo por segundo, y por tanto, es la velocidad de transmisi\u00f3n. El puerto serie lo inicializamos a una velocidad de 9600 baudios, es decir, 9600 s\u00edmbolos por segundo y como un baudio para este puerto es un bit, entonces estaremos transmitiendo a 9600 bits por segundo.<\/p>\n<h3>M\u00e1s sobre el puerto serie<\/h3>\n<p>A diferencia de los pines, el puerto serie no lo hemos inicializado como salida o entrada. \u00bfPor qu\u00e9? Pues porque es salida y entrada al mismo tiempo.<\/p>\n<p>\u00bfSignifica esto que, adem\u00e1s de enviar datos desde la placa Arduino al ordenador podemos enviar datos desde el ordenador a la placa Arduino?<\/p>\n<p>S\u00ed, claro. Es la manera en que estamos enviando el programa a ejecutar por la placa, pero es que adem\u00e1s podemos enviarle informaci\u00f3n o comandos desde nuestro ordenador, como por ejemplo: enciende un LED. Esto ya lo veremos\u00a0en otro post.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Uno de los mayores retos a los que se enfrenta un programador es encontrar los errores cuando tu programa no hace lo que se supone que deber\u00eda de hacer. Si a esto le a\u00f1adimos una placa con la que hacemos experimentos electr\u00f3nicos pues entonces el problema es a\u00fan mayor: \u00bfhe conectado\u00a0correctamente los pines? \u00bfpor qu\u00e9 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2],"tags":[10,12,26],"class_list":["post-127","post","type-post","status-publish","format-standard","hentry","category-arduino","tag-arduino","tag-buenas-practicas","tag-principiante"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/comments?post=127"}],"version-history":[{"count":0,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/posts\/127\/revisions"}],"wp:attachment":[{"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/media?parent=127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/categories?post=127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/escueladefrikis.com\/index.php\/wp-json\/wp\/v2\/tags?post=127"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}