{"id":2704,"date":"2014-04-23T20:17:58","date_gmt":"2014-04-23T18:17:58","guid":{"rendered":"http:\/\/www.diarioelectronicohoy.com\/blog\/?p=2704"},"modified":"2019-07-24T18:56:59","modified_gmt":"2019-07-24T16:56:59","slug":"scaner-i2c-bus","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/scaner-i2c-bus","title":{"rendered":"Scaner I2C-Bus."},"content":{"rendered":"<h2><span style=\"color: #000080;\">Presentaci\u00f3n.<\/span><\/h2>\n<p style=\"text-align: justify;\">En muchas ocasiones nos encontramos ante un proyecto que requiere un n\u00famero importante de puertos y esta labor se la encomendamos a unos dispositivos que ya conocemos como son el sistema I2C-Bus, el cual nos da una soluci\u00f3n sencilla y r\u00e1pida de servicio, en esos casos, la cuesti\u00f3n es direccionar cada dispositivo, es decir, utilizar las distintas direcciones \u00fanicas para cada uno.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2019\/07\/direcciones.jpg\" target=\"_blank\" rel=\"attachment noopener wp-att-2780 noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-2780\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/direcciones-300x154.jpg\" alt=\"direcciones\" width=\"300\" height=\"154\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/direcciones-300x154.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/direcciones.jpg 377w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Normalmente, ante una tabla de direcciones, podemos elegir la correspondiente a cada dispositivo y habremos solucionado el contratiempo. Sin embargo, la cuesti\u00f3n es que, cada dispositivo tiene una direcci\u00f3n \u00fanica y sin la cual no podemos acceder al dispositivo. En cuantas ocasiones nos encontramos ante esta situaci\u00f3n o que, despu\u00e9s de un tiempo o en caso de una fortuita ampliaci\u00f3n del sistema, tenemos que conocer la direcci\u00f3n del nuevo dispositivo.<!--more--><\/p>\n<p style=\"text-align: justify;\">En esta p\u00e1gina, vamos a dar respuesta a esta situaci\u00f3n con un c\u00f3digo libre que se puede encontrar en distintos sitios. El c\u00f3digo es muy sencillo y no hace \u00abnada m\u00e1s\u00bb, s\u00f3lo nos muestra la direcci\u00f3n que le corresponde a cada dispositivo.<\/p>\n<pre class=\"\" style=\"background-color: #f6f6f6; background-position: initial initial; background-repeat: initial initial; border: 1px dashed #cccccc; font-family: arial; font-size: 12px; height: 200px; line-height: 20px; overflow: auto; padding: 0px; text-align: left; width: 96%;\">\/*\n*  i2c_scanner\n*\n*  Version 1\n*  Este programa (c\u00f3digo que aparece) se pueden encontrar en muchos sitios.\n*  Por ejemplo, en el foro Arduino.cc.\n*  El autor original no se conoce.\n*  Version 2, Juni 2012, Using Arduino 1.0.1\n*  Adaptado para ser lo m\u00e1s simple posible por usuario Krodal Arduino.cc\n*  Version 3, Feb 26 2013 by louarnold\n*  Version 4, March 3, 2013, Using Arduino 1.0.3\n*  by Arduino.cc user Krodal.\n*  Version 5, March 28, 2013\n*  Como la versi\u00f3n 4, pero las exploraciones de direcciones ahora a 127. \n* \n*  Este boceto prueba las direcciones est\u00e1ndar de 7 bits. \n*  Los dispositivos con direcci\u00f3n de bits m\u00e1s alta \n*  no pueden ser vistas correctamente.\n*\/\n#include \"Wire.h\" ; si no aparece la librer\u00eda es por motivos del soft \"&lt; \"\n\nvoid setup()\n {\n  Wire.begin();\n\n  Serial.begin(9600);\n  Serial.println(\"\\nI2C Scanner\");\n}\n\n void loop()\n {\n  byte error, address;\n  int nDevices;\n\n  Serial.println(\"Scanning...\");\n\n  nDevices = 0;\n  for(address = 1; address &lt; 127; address++ ) \n  {\n  \/\/ El i2c_scanner utiliza el valor devuelto o el \n  \/\/ Write.endTransmisstion para ver si un \n  \/\/ dispositivo reconoci\u00f3 la direcci\u00f3n.\n  Wire.beginTransmission(address);\n  error = Wire.endTransmission();\n\n  if (error == 0)\n  {\n   Serial.print(\"Dispositivo I2C en direcci\u00f3n 0x\");\n   if (address&lt;16) \n   Serial.print(\"0\");\n   Serial.print(address,HEX);\n   Serial.println(\" !\");\n\n   nDevices++;\n  }\n  else if (error==4) \n  {\n   Serial.print(\"Error desconocido en direcci\u00f3n 0x\");\n   if (address&lt;16) \n   Serial.print(\"0\");\n   Serial.println(address,HEX);\n   } \n  }\n  if (nDevices == 0)\n  Serial.println(\"Dispositivo I2C No hallado.\\n\");\n  else\n  Serial.println(\"hecho\\n\");\n\n  delay(5000);   \/\/ espera 5 segundos para otro scan\n}<\/pre>\n<p style=\"text-align: justify;\">Copie y pegue este c\u00f3digo compile y s\u00fabalo a su Arduino. Ahora, abra la ventana del monitor serie, para ver los mensajes que se producen en cada captura. Si usted no ha conectado ning\u00fan dispositivo I2C o si estuviera en mal estado, se mostrar\u00eda la siguiente imagen.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/scaner-i2c-bus\/scan1\" target=\"_blank\" rel=\"attachment noopener wp-att-2706 noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-2706\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan1.jpg\" alt=\"scan1\" width=\"469\" height=\"181\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan1.jpg 597w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan1-300x116.jpg 300w\" sizes=\"auto, (max-width: 469px) 100vw, 469px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">En el caso de tener conectado un dispositivo I2C en buen estado, le mostrar\u00e1 un mensaje similar al siguiente, en el que se aprecia la direcci\u00f3n \u00fanica de dicho dispositivo.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/scaner-i2c-bus\/scan2\" target=\"_blank\" rel=\"attachment noopener wp-att-2707 noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-2707\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan2.jpg\" alt=\"scan2\" width=\"459\" height=\"156\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan2.jpg 597w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/scan2-300x102.jpg 300w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Esta es una aplicaci\u00f3n de ayuda para facilitar la tarea del programador.\u00a0\u00a0La siguiente es una foto del uso del escaner.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/scaner-i2c-bus\/escaner_i2cp\" target=\"_blank\" rel=\"attachment noopener wp-att-2785 noreferrer\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-2785\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/escaner_i2cp-300x225.jpg\" alt=\"escaner_i2cp\" width=\"300\" height=\"225\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/escaner_i2cp-300x225.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2014\/04\/escaner_i2cp.jpg 364w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Si le ha servido de ayuda me considerar\u00e9 complacido.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Presentaci\u00f3n. En muchas ocasiones nos encontramos ante un proyecto que requiere un n\u00famero importante de puertos y esta labor se la encomendamos a unos dispositivos que ya conocemos como son el sistema I2C-Bus, el cual nos da una soluci\u00f3n sencilla y r\u00e1pida de servicio, en esos casos, la cuesti\u00f3n es direccionar cada dispositivo, es decir, [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":2785,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[22,15,272],"tags":[255,90,120],"class_list":["post-2704","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-microcontroladores","category-scaner-i2c","tag-i2c","tag-i2cbus","tag-pcf8574"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/2704","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/comments?post=2704"}],"version-history":[{"count":14,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/2704\/revisions"}],"predecessor-version":[{"id":4899,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/2704\/revisions\/4899"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/2785"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=2704"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=2704"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=2704"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}