{"id":306,"date":"2010-11-13T20:31:44","date_gmt":"2010-11-13T19:31:44","guid":{"rendered":"http:\/\/electronicapractica.crearblog.com\/?p=306"},"modified":"2019-06-13T19:45:47","modified_gmt":"2019-06-13T17:45:47","slug":"reloj-con-el-ds1307","status":"publish","type":"post","link":"https:\/\/www.diarioelectronicohoy.com\/blog\/reloj-con-el-ds1307","title":{"rendered":"Reloj con el DS1307"},"content":{"rendered":"<p><a name=\"inici\"><\/a><\/p>\n<h2><span style=\"color: #000080;\">UN RELOJ CON EL DS1307<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Actualmente, cuando realizamos proyectos que requieren cierto nivel de flexibilidad, pensar en utilizar un microcontrolador siempre es una buena idea y ya puestos en &#8216;harina&#8217; (como decimos en Espa\u00f1a), siempre que el proyecto lo requiera, es interesante, la aplicaci\u00f3n de un RTC, es decir, un reloj en tiempo real. Sin embargo, tambi\u00e9n es cierto que en estos proyectos, estamos limitados a cierto n\u00famero de E\/S que acaban por ser demasiado limitadas y es entonces, es cuando se hace necesario el uso del I<sup>2<\/sup>C bus, el cual debemos considerar ya que, nos dar\u00e1 un gran servicio, simplemente con el uso de dos hilos o patillas del proyecto. M\u00e1s informaci\u00f3n sobre el I<sup>2<\/sup>C bus en <a href=\"http:\/\/www.hispavila.com\/3ds\/atmega\/www.hispavila.con\/3ds\/admega\/descargas\/i2c.pdf\" target=\"_blank\" rel=\"noopener noreferrer\"> este sitio<\/a>.<!--more--><\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Para estos casos, \u00a9Dallas actualmente <a href=\"http:\/\/www.maxim-ic.com\/\" target=\"_blank\" rel=\"noopener noreferrer\"> \u00a9Maxim<\/a> o <a href=\"http:\/\/www.cypress.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">\u00a9Cypress<\/a>, entre otros, como veremos, ponen a nuestra disposici\u00f3n un peque\u00f1o dispositivo, capaz de mostrarnos informaci\u00f3n sobre segundos, minutos, horas, d\u00eda, fecha, mes y a\u00f1o, con una sola consulta. El DS1307 funciona como un dispositivo esclavo en el bus I<sup>2<\/sup>C.<\/span><\/p>\n<h2><span style=\"color: #000080;\"><span style=\"font-size: small;\">EL DS1307.<\/span><\/span><\/h2>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Aunque de forma superficial, dir\u00e9 que el DS1307 es un reloj\/calendario de baja potencia, completo con 56 bytes de SRAM no-vol\u00e1til. Como ya se ha mencionado, el reloj\/calendario del DS1307, provee informaci\u00f3n de segundos, minutos, horas, d\u00eda, fecha, mes y a\u00f1o. La fecha al final del mes durante los meses con menos de 31 d\u00edas, se ajusta autom\u00e1ticamente e incluye las correcciones para el a\u00f1o bisiesto. El reloj funciona en cualquiera de los formatos de hora 24 o 12 horas con indicador AM\/PM. <a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/DS1307.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-1376 alignleft\" title=\"DS1307\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/DS1307.jpg\" alt=\"\" width=\"200\" height=\"159\" \/><\/a>El DS1307 tiene un circuito integrado en el sensor de energ\u00eda que detecta los fallos de alimentaci\u00f3n y cambia autom\u00e1ticamente a la fuente de respaldo de seguridad.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">El acceso a los datos, se obtiene mediante la aplicaci\u00f3n de una condici\u00f3n de inicio (start) y la prestaci\u00f3n de un c\u00f3digo de identificaci\u00f3n del dispositivo (0x68), seguido de una direcci\u00f3n de registro. Los registros posteriores se puede acceder de forma secuencial. El DS1307 viene en un paquete de 8-pines DIP, adem\u00e1s de otros formatos. El DS1307 cuenta en formato BCD.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">El DS1307 utiliza un cristal externo de 32.768kHz. El circuito oscilador no necesita resistencias o condensadores externos para funcionar. Puede encontrar m\u00e1s informaci\u00f3n sobre el DS1307 en la red y tambi\u00e9n en <a href=\"http:\/\/www.hispavila.com\/3ds\/atmega\/www.hispavila.con\/3ds\/admega\/descargas\/ds1307_esp.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">este sitio<\/a>.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-DS1307.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1378\" title=\"circuito DS1307\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-DS1307.jpg\" alt=\"\" width=\"450\" height=\"315\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-DS1307.jpg 450w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-DS1307-300x210.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-DS1307-428x300.jpg 428w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/a>Para conocer la estructura b\u00e1sica de un programa de Arduino, v\u00e9ase a partir de la p\u00e1gina 7 de: \u00ab<a href=\"http:\/\/www.sullivan-county.com\/ele\/pdf\/arduino_notebook.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Arduino Programming Notebook by Brian Evans<\/a>\u00ab<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Usando Arduino con el Atmega168 y un DS1307 (real time clock), vamos a tratar de poner en funcionamiento el DS1307 por medio de dos cables (I\u00b2C) o pines digitales D4 y D5 de Arduino. Estos dos pines SDA y SCL en algunos Arduinos no necesitan de las t\u00edpicas RPA (Resistencias de Polarizaci\u00f3n a Alto) ya que disponen de unos puentes (jumps) para su uso, revise su Arduino por si los dispone, lo propio es que tenga que conectar una resistencia (de entre 4k7 y 10k) entre el positivo y el pin SDA y otra al pin SCL, debido a que estos, se presentan con colector abierto o drenador abierto, revise el DS para m\u00e1s informaci\u00f3n.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Viendo la sencillez del circuito anterior, resulta evidente que no debe crearnos desasosiego poner en practica este proyecto, nos permitir\u00e1 poner en marcha el reloj del DS1307 con la ayuda de un cristal, nuestro Arduino con un sencillo programa y una bater\u00eda del tipo bot\u00f3n de 3.2V la cual mantendr\u00e1 el oscilador interno cuando desconectemos la tensi\u00f3n de alimentaci\u00f3n.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Esta es la foto (por ambos lados), que muestra el montaje que realice con los pocos componentes que lleva. Respecto del cristal de cuarzo, como se aprecia, estoy utilizando uno que desguac\u00e9, pertenec\u00eda a un reloj de pulsera, su precisi\u00f3n es realmente buena, por lo que llevo en pruebas, desv\u00eda menos de un segundo por mes, al menos eso es lo que muestra respecto del reloj de mi PC. Todos los componentes, por unas pocas monedas, alrededor de 4\u20ac o poco m\u00e1s, no siempre es necesario adquirir materiales, es conveniente reciclar componentes de montajes anteriores.<\/span><\/p>\n<p style=\"text-align: center;\"><span style=\"font-size: small;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/montaje.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1380\" title=\"montaje\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/montaje.jpg\" alt=\"\" width=\"560\" height=\"515\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/montaje.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/montaje-300x275.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/montaje-326x300.jpg 326w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">En la imagen anterior, se puede apreciar los 5 espadines que he incluido para una conexi\u00f3n m\u00e1s r\u00e1pida a los distintos anclajes, como un z\u00f3calo o al propio protoboard. El circuito impreso (PCB) que corresponde a este circuito se muestra en la siguiente imagen, se incluyen las RPA del esquema.<a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-ds1307.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1381\" title=\"circuito ds1307\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-ds1307.jpg\" alt=\"\" width=\"560\" height=\"368\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-ds1307.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-ds1307-300x197.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-ds1307-456x300.jpg 456w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a><\/span><\/p>\n<h2><span style=\"color: #000080;\"><span style=\"font-size: small;\">PRUEBAS CON C\u00d3DIGOS.<\/span><\/span><\/h2>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Para ser sinceros, dir\u00e9 que he probado bastantes c\u00f3digos que circulan por la red, si bien es cierto, todos funcionan, unos atrasan y otros adelantan su conteo, naturalmente he hecho ciertos ajustes en los tiempos de alguno de esos c\u00f3digos, en especial en los que m\u00e1s se adaptaban a mi idea b\u00e1sica y con ello he adquirido cierta destreza en adaptar unos y otros a unas necesidades que me impuse a mi mismo, para lograr \u00ab<strong>mi reloj<\/strong>\u00ab.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Al principio, tuve problemas con el bus I\u00b2C, as\u00ed que, tuve que consultar el foro, gracias a los inestimables consejos y ayudas de los \u00abMaestros\u00bb que por ah\u00ed circulan, he ido superando los obst\u00e1culos que cada d\u00eda se presentaban. Si me piden consejo; aconsejo que, no se pierda la calma, ni debe bajarse la guardia, hay que perseverar y siempre se puede lograr un resultado adecuado a nuestros esfuerzos, eso es lo que hay que hacer para superarse.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Tambi\u00e9n, tuve que leer muchas hojas de datos de los fabricantes, alguna, con el DS1307, hasta me atrev\u00ed a hacer una <a href=\"http:\/\/www.hispavila.com\/3ds\/atmega\/www.hispavila.con\/3ds\/admega\/descargas\/ds1307_esp.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">traducci\u00f3n libre al espa\u00f1ol<\/a>, ya que encontr\u00e9 muy poco al respecto, en nuestro idioma. El leer estas hojas de caracter\u00edsticas es una fuente de informaci\u00f3n muy aconsejable para poder sacar sus conclusiones y poner en acci\u00f3n nuestras ideas.<a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/rtc-module.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1384\" title=\"rtc module\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/rtc-module.jpg\" alt=\"\" width=\"460\" height=\"535\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/rtc-module.jpg 460w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/rtc-module-257x300.jpg 257w\" sizes=\"auto, (max-width: 460px) 100vw, 460px\" \/><\/a><\/span><\/p>\n<h2><span style=\"color: #000080;\"><span style=\"font-size: small;\">Puesta en pr\u00e1ctica.<\/span><\/span><\/h2>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Y as\u00ed, empec\u00e9 con los c\u00f3digos, con este que sigue y otros, saque conclusiones de c\u00f3mo proceder para extraer ciertos datos y sobre todo la forma de c\u00f3mo hacerlo y presentarlo a mi manera.<\/span><\/p>\n<pre>\/\/\r\n\/\/ Maurice Ribble\r\n\/\/ 4-17-2008\r\n\/\/ http:\/\/www.glacialwanderer.com\/hobbyrobotics\r\n\/\/ Este codigo prueba el reloj DS1307 en tiempo real en la placa Arduino.\r\n\/\/ El DS1307 trabaja en binario codificado en decimal o BCD. Usted puede\r\n\/\/ buscar BCD en Google si no le es familiar. Puede generar una onda\r\n\/\/ cuadrada, pero no expongo esto en este codigo. Vease el\r\n\/\/ DS1307 por sus capacidades.\r\n\/\/\r\n\/\/ Modificado, para hispavila.com\r\n\/\/\r\n#include &lt;Wire.h&gt; \/\/\r\n#define DS1307_I2C_ADDRESS 0x68\r\n\/\/ Convierte n\u00fameros normales decimales a BCD (binario decimal codificado)\r\nbyte decToBcd(byte val) {\r\n return ( (val\/10*16) + (val%10) );\r\n}\r\n\/\/ Convierte BCD (binario decimal codificado) a n\u00fameros normales decimales\r\nbyte bcdToDec(byte val) {\r\n return ( (val\/16*10) + (val%16) );\r\n}\r\n\/\/ Parar el DS1307, pero esto tiene el efecto secundario de segundos que se\r\n\/\/ ponen a 0 probablemente solo quiera usar esto para pruebas.\r\n\/* \r\n\r\nvoid stopDs1307()\r\n{\r\n Wire.beginTransmission(DS1307_I2C_ADDRESS);\r\n Wire.send(0); Wire.send(0x80); Wire.endTransmission();\r\n}\r\n*\/\r\n\/\/ 1) Sets the date and time on the ds1307\r\n\/\/ 2) Starts the clock\r\n\/\/ 3) Sets hour mode to 24 hour clock\r\n\/\/ Assumes you're passing in valid numbers \r\n\r\nvoid setDateDs1307(byte second, \/\/ 0-59\r\n                   byte minute, \/\/ 0-59\r\n                   byte hour,   \/\/ 1-23\r\n                   byte dayOfWeek, \/\/ 1-7\r\n                   byte dayOfMonth, \/\/ 1-28\/29\/30\/31\r\n                   byte month, \/\/ 1-12\r\n                   byte year) \/\/ 0-99\r\n{\r\n Wire.beginTransmission(DS1307_I2C_ADDRESS);\r\n Wire.send(0);\r\n Wire.send(decToBcd(second));\/\/ 0 a bit 7 inicia el reloj\r\n Wire.send(decToBcd(minute));\r\n Wire.send(decToBcd(hour));\/\/ Para 12 hora am\/pm usted tiene que poner\r\n     \/\/ el bit 6 (tambien tiene que cambiar readDateDs1307)\r\n Wire.send(decToBcd(dayOfWeek));\r\n Wire.send(decToBcd(dayOfMonth));\r\n Wire.send(decToBcd(month));\r\n Wire.send(decToBcd(year));\r\n Wire.endTransmission(); } \/\/ Establece la fecha y el tiempo del ds1307\r\nvoid getDateDs1307(byte *second,\r\n        byte *minute,\r\n        byte *hour,\r\n        byte *dayOfWeek,\r\n        byte *dayOfMonth,\r\n        byte *month,\r\n        byte *year)\r\n{ \/\/ Resetea el registro puntero\r\n Wire.beginTransmission(DS1307_I2C_ADDRESS);\r\n Wire.send(0);\r\n Wire.endTransmission();\r\n Wire.requestFrom(DS1307_I2C_ADDRESS, 7);\r\n\/\/ Alguno de estos necesitan enmascarar, ciertos bits son bits de control\r\n *second = bcdToDec(Wire.receive() &amp; 0x7f);\r\n *minute = bcdToDec(Wire.receive());\r\n *hour = bcdToDec(Wire.receive() &amp; 0x3f);\/\/ change this if 12 hour am\/pm\r\n *dayOfWeek = bcdToDec(Wire.receive());\r\n *dayOfMonth = bcdToDec(Wire.receive());\r\n *month = bcdToDec(Wire.receive());\r\n *year = bcdToDec(Wire.receive());\r\n}\r\nvoid setup() {\r\n byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;\r\n Wire.begin();\r\n Serial.begin(9600); \/\/ Cambie estos valores a los que usted quiere poner su reloj.\r\n \/\/ Usted probablemente solo quiere poner su reloj una vez y luego quitar\r\n \/\/ la llamada de setDateDs1307.\r\n\/*\r\n\/\/ si desea poner en hora, active esta parte y luego vuelva a quitarla\r\n second = 00;\r\n minute = 15;\r\n hour = 21;\r\n dayOfWeek = 6;\r\n dayOfMonth = 19;\r\n month = 9;\r\n year = 9;\r\n setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);\r\n *\/\r\n }\r\nvoid loop() {\r\n byte second, minute, hour, dayOfWeek, dayOfMonth, month, year; \r\n\r\n getDateDs1307(&amp;second, &amp;minute, &amp;hour, &amp;dayOfWeek, &amp;dayOfMonth, &amp;month, &amp;year);\r\nSerial.print(\"20\"); \u00a0\r\nif (year &lt; 10) Serial.print(\"0\"); \u00a0Serial.print(year, DEC);\r\nSerial.print(\"\/\");\r\nif (month &lt; 10) Serial.print(\"0\"); Serial.print(month, DEC);\r\nSerial.print(\"\/\");\r\nif (dayOfMonth &lt; 10) Serial.print(\"0\");\r\nSerial.print(dayOfMonth, DEC); Serial.print(\" \");\r\nif (hour &lt; 10) Serial.print(\"0\"); Serial.print(hour, DEC);\r\nSerial.print(\":\");\r\nif (minute &lt; 10) Serial.print(\"0\"); Serial.print(minute, DEC); Serial.print(\":\");\r\nif (second &lt; 10) Serial.print(\"0\"); Serial.print(second, DEC);\r\nSerial.print(\" Dia de la semana:\"); \/\/\r\nSerial.println(dayOfWeek, DEC); \/\/ Esto pone nombre del dia \r\n\r\nswitch (dayOfWeek) {\r\n case 1: Serial.println(\" Lunes\"); break;\r\n case 2: Serial.println(\" Martes\"); break;\r\n case 3: Serial.println(\" Miercoles\"); break;\r\n case 4: Serial.println(\" Jueves\"); break;\r\n case 5: Serial.println(\" Viernes\"); break;\r\n case 6: Serial.println(\" Sabado\"); break;\r\n case 7: Serial.println(\" Domingo\"); break;\r\n}\r\ndelay(1000); }<\/pre>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">He modificado un poco el c\u00f3digo, tratando de adaptarlo a mi idea de lo que quiero, si lo compara con el original, se aprecia que he alterado la forma de presentaci\u00f3n de los registros del DS1307 y adem\u00e1s he a\u00f1adido la presentaci\u00f3n del d\u00eda de la semana, me gusta m\u00e1s de esta forma, es algo personal.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Este c\u00f3digo, no me acaba de convencer, no digo que no funcione, s\u00f3lo que, quiero otra cosa. El sistema de conversi\u00f3n de decimal a binario y viceversa no es todo lo exacto que debe ser para un reloj que se parezca a un reloj, o yo no lo he entendido, lo siento, pero lo he probado y es lo que hay. Pero, usted debe probarlo y sacar sus conclusiones, no se fie de mis pruebas, usted puede tener m\u00e1s virtudes que yo.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">As\u00ed que, yo probar\u00e9 otro c\u00f3digo. Bueno, el circuito que estoy utilizando para estas pruebas se puede ver en esta foto:<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\"><a href=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1387\" title=\"circuito\" src=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito.jpg\" alt=\"\" width=\"560\" height=\"423\" srcset=\"https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito.jpg 560w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-300x226.jpg 300w, https:\/\/www.diarioelectronicohoy.com\/blog\/imagenes\/2010\/11\/circuito-397x300.jpg 397w\" sizes=\"auto, (max-width: 560px) 100vw, 560px\" \/><\/a>Vale, es cierto que la foto pertenece a la prueba de otro c\u00f3digo, ya lo comentar\u00e9 en su momento, pero, el montaje es el mismo, como se ver\u00e1. De hecho, los pulsadores que se ven en la foto, no son necesarios y por lo tanto aunque no los quite de sus respectivos anclajes, no perturban el funcionamiento de los c\u00f3digos que uso en cada momento y de esta forma, cuando el c\u00f3digo lo requiere los utilizo y nada m\u00e1s que objetar.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Este que sigue, es otro c\u00f3digo, con el cual se puede leer la informaci\u00f3n del registro de datos del reloj, recuerde las hojas de datos (DS data sheet), este registro es para no entorpecer el normal funcionamiento del cron\u00f3metro del DS1307 y poder extraer los datos.<\/span><\/p>\n<p align=\"right\"><span style=\"font-size: small;\"><a href=\"#inici\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"http:\/\/s3.subirimagenes.com:81\/privadas\/previo\/thump_1251680uparrowsmall.gif\" alt=\"\" width=\"25\" height=\"19\" \/><\/a><\/span><\/p>\n<pre><span style=\"color: #008000;\">\/\/ \r\n\/\/ Leerhora.pde \r\n\/\/ \r\n\/\/ Este codigo solo lee el contenido del DS1307 \r\n\/\/ \r\n\/\/ http:\/\/www.arduino.cc\/cgi-bin\/yabb2\/YaBB.pl?num=1180908809 \r\n\/\/ \r\n\/\/ Modificado, para hispavila.com \r\n\/\/<\/span>\r\n#include &lt;Wire.h&gt;\r\nint hour;\r\nint minute;\r\nint second;\r\nint month;\r\nint dayOfWeek;\r\nint dayOfMonth;\r\nint year;\r\n<span style=\"color: #008000;\">\/\/char* dow[7] = {\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"};  \r\n\/\/char* dow[7] = {\"Lunes\", \"Martes\", \"Miercoles\", \"Jueves\", \"Viernes\", \"Sabado\", \"Domingo\"};<\/span> \r\nvoid setup() \r\n{ \r\n Serial.begin(9600); \r\n Wire.begin(); \r\n} \r\nvoid loop() \r\n{ \r\n <span style=\"color: #008000;\">\/\/ Below required to reset the register address to 0.<\/span> \r\n Wire.beginTransmission(104); \/\/ transmit to device #104, the ds1307  \r\n Wire.send(0x00); Wire.endTransmission(); \/\/ stop transmitting \r\n Wire.requestFrom(104, 7);\r\n <span style=\"color: #008000;\"> \/\/ request 7 bytes from slave ds1307, we'll assume <\/span> \r\n <span style=\"color: #008000;\"> \/\/ it'll send them all even though it doesn't have to<\/span> \r\n second = Wire.receive(); \r\n minute = Wire.receive(); \r\n hour = Wire.receive(); \r\n dayOfWeek = Wire.receive(); \r\n dayOfMonth = Wire.receive(); \r\n month = Wire.receive(); \r\n year = Wire.receive(); \r\n<span style=\"color: #008000;\">\/\/ Convertir todos los valores BCD que podr\u00edan tener \"decenas\" a decimal. <\/span> \r\n<span style=\"color: #008000;\">\/\/ Mucha gente en arduino hace esto con shits pero esto lo veo m\u00e1s f\u00e1cil.<\/span> \r\n hour=hour\/16 * 10 + hour % 16; \r\n minute=minute\/16 * 10 + minute % 16; \r\n second=second\/16 * 10 + second % 16; \r\n dayOfMonth=dayOfMonth\/16 * 10 + dayOfMonth % 16; \r\n month=month\/16 * 10 + month % 16; \r\n year=2000 + year\/16 * 10 + year % 16; \r\n if (year &lt; 10) { Serial.print(\"0\"); } Serial.print(year); \r\n Serial.print(\"\/\"); \r\n if (month &lt; 10) { Serial.print(\"0\"); } Serial.print(month); \r\n Serial.print(\"\/\"); \r\n if (dayOfMonth &lt; 10) { Serial.print(\"0\"); } Serial.print(dayOfMonth); \r\n Serial.print(\" \"); \r\n if (hour &lt; 10) { Serial.print(\"0\"); } Serial.print(hour); \r\n Serial.print(\":\"); \r\n if (minute &lt; 10) { Serial.print(\"0\"); } Serial.print(minute); \r\n Serial.print(\":\"); \r\n if (second &lt; 10) { Serial.print(\"0\"); } Serial.print(second); \r\n Serial.print(\" \"); \r\n Serial.print(\" Dia de la semana:\"); \/\/ Esto pone nombre del dia \r\n\r\nswitch (dayOfWeek) \r\n { \r\n  case 1: Serial.println(\" Lunes\"); break; \r\n  case 2: Serial.println(\" Martes\"); break; \r\n  case 3: Serial.println(\" Miercoles\"); break; \r\n  case 4: Serial.println(\" Jueves\"); break; \r\n  case 5: Serial.println(\" Viernes\"); break; \r\n  case 6: Serial.println(\" Sabado\"); break; \r\n  case 7: Serial.println(\" Domingo\"); break; \r\n } \r\n delay(1000); \u00a0\r\n}<\/pre>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">De nuevo mi impronta, la presentaci\u00f3n y el d\u00eda de la semana. El siguiente paso, es de esperar, buscar y revisar hojas de datos y ejemplos de la red.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">He encontrado un c\u00f3digo con el que puedo interactuar, es decir, puedo poner la hora en cualquier momento sin necesidad de codificar y cargar el c\u00f3digo cada vez, se trata de usar tres pulsadores para cargar los minutos y hora del momento actual. Vaya que m\u00e1s puedo pedir. Revise este c\u00f3digo y trate de comprender que hace cada subrutina y hagas sus modificaciones a su gusto. Aqu\u00ed est\u00e1:<\/span><\/p>\n<pre><span style=\"font-size: small;\">\/\/ RTC con DS1307 \r\n\/\/ \r\n\/\/ Se trata de un reloj en tiempo real con el DS1307. \r\n\/\/ \r\n\/\/ \r\n\/\/ Controlado por 3 pulsadores. Los 3 pulsadores son N.A. van a masa \r\n\/\/ SW0 al pin D4, el SW1 al pin D5 y el SW2 al pin D6. Un pulsador SW0 para \r\n\/\/ los segundos, un SW1 para para los minutos y el tercero SW2 pulsador las horas. \/\/ \r\n\/\/ Modificado por: V. Garcia, para hispavila.com \r\n\/\/ \r\n#include &lt;Wire.h&gt; \/\/ specify use of Wire.h library. \r\nbyte blinkPin = 13; \/\/ LED \r\nbyte SW0 = 4; \/\/ para los segundos \r\nbyte SW1 = 5; \/\/ para los minutos \r\nbyte SW2 = 6; \/\/ para las horas \r\n\r\nvoid setup() \r\n{ \r\n Wire.begin(); \/\/ join i2c bus (address optional for master)\r\n Serial.begin(9600); \r\n pinMode(blinkPin, OUTPUT); \r\n digitalWrite(blinkPin, 0); \r\n pinMode(SW0, INPUT); \/\/ for this use a slide switch \r\n pinMode(SW1, INPUT); \/\/ N.O. push button switch \r\n pinMode(SW2, INPUT); \/\/ N.O. push button switch \r\n digitalWrite(SW0, HIGH); \/\/ pull-ups on \r\n digitalWrite(SW1, HIGH); \r\n digitalWrite(SW2, HIGH); \r\n} \r\nvoid loop() \r\n{ \r\n Wire.beginTransmission(0x68); \r\n Wire.send(0); \r\n Wire.endTransmission(); \r\n Wire.requestFrom(0x68, 7); \r\n byte secs = Wire.receive(); \r\n byte mins = Wire.receive(); \r\n byte hrs = Wire.receive(); \r\n byte day = Wire.receive(); \r\n byte date = Wire.receive(); \r\n byte month = Wire.receive(); \r\n byte year = Wire.receive(); \/\/ use DD-MM-YYYY \r\n Serial.print(\"La fecha es \"); \/\/ \"The date is \" \r\n if (date &lt; 10) Serial.print(\"0\"); Serial.print(date, HEX); \r\n Serial.print(\"-\"); \r\n if (month &lt; 10) Serial.print(\"0\"); Serial.print(month,HEX); \r\n Serial.print(\"-\"); Serial.print(\"20\"); \r\n if (year &lt; 10) Serial.print(\"0\"); Serial.print(year, HEX); \r\n Serial.print(\" \"); \/\/ hours, minutes, seconds \r\n Serial.print(\"La hora es \"); \/\/ \"The time is \" \r\n if (hrs &lt; 10) Serial.print(\"0\"); Serial.print(hrs,HEX); \r\n Serial.print(\":\"); \r\n if (mins &lt; 10) Serial.print(\"0\"); Serial.print(mins, HEX); \r\n Serial.print(\":\"); \r\n if (secs &lt; 10) Serial.print(\"0\"); Serial.print(secs, HEX); \r\n Serial.print(\" \"); \r\n Serial.print(\" Dia de la semana:\"); \/\/ Esto pone nombre del dia \r\n\r\nswitch (day) \r\n{ \r\n case 1: Serial.println(\" Lunes\"); break; \r\n case 2: Serial.println(\" Martes\"); break; \r\n case 3: Serial.println(\" Miercoles\"); break; \r\n case 4: Serial.println(\" Jueves\"); break; \r\n case 5: Serial.println(\" Viernes\"); break; \r\n case 6: Serial.println(\" Sabado\"); break; \r\n case 7: Serial.println(\" Domingo\"); break; \r\n} \/\/ \r\nif (!(digitalRead(SW0))) set_time(); \/\/ hold the switch to set time \r\ndelay(1000); \/\/wait a second before next output \r\ntoggle(blinkPin); \r\n} \r\n\/\/ toggle the state on a pin. \r\n\/\/ cambiar el estado de un pin<\/span>  \r\nvoid toggle(int pinNum) \r\n{ \r\n int pinState = digitalRead(pinNum); \r\n pinState = !pinState; \r\n digitalWrite(pinNum, \r\n pinState); \r\n} \r\nvoid set_time() \r\n{ \r\n byte minutes = 0; \r\n byte hours = 0; \r\n \r\n while (!digitalRead(SW0)) \/\/ set time switch must be released to exit \r\n { \r\n  while (!digitalRead(SW1)) \/\/ set minutes \r\n   { \r\n    minutes++; \r\n    if ((minutes &amp; 0x0f) &gt; 9) minutes = minutes + 6; \r\n    if (minutes &gt; 0x59) minutes = 0; \r\n    Serial.print(\"Minutos = \"); \r\n    if (minutes &gt;= 9) Serial.print(\"0\"); \r\n    Serial.println(minutes, HEX); \r\n    delay(750); \r\n   } \r\n   while (!digitalRead(SW2)) \/\/ set hours \r\n    { \r\n     hours++; if ((hours &amp; 0x0f) &gt; 9) hours = hours + 6; \r\n     if (hours &gt; 0x23) hours = 0; \r\n     Serial.print(\"Horas = \"); \r\n     if (hours &lt;= 9) Serial.print(\"0\"); \r\n     Serial.println(hours, HEX); \r\n     delay(750); \r\n    } \r\n    Wire.beginTransmission(0x68); \/\/ activate DS1307 \r\n    Wire.send(0); \/\/ where to begin \r\n    Wire.send(0x00); \/\/seconds \r\n    Wire.send(minutes); \/\/minutes \r\n    Wire.send(0x80 | hours); \/\/hours (24hr time) \r\n    Wire.send(0x06); \/\/ Day 01-07 \r\n    Wire.send(0x01); \/\/ Date 0-31 \r\n    Wire.send(0x05); \/\/ month 0-12 \r\n    Wire.send(0x09); \/\/ Year 00-99 \r\n    Wire.send(0x10); \/\/ Control 0x10 produces a 1 HZ square wave on pin 7.\r\n    Wire.endTransmission(); \r\n   } \r\n}<\/pre>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Como es de costumbre, mi aporte al c\u00f3digo, en cuanto a adaptar el d\u00eda de la semana, cosa que no viene en el original, no es mucho, pero ah\u00ed est\u00e1. \u00abUn grano de arena no es una playa, pero por algo se empieza\u00bb.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Despu\u00e9s de varias discusiones en foros, unos en ingl\u00e9s y otros en espa\u00f1ol, el intercambio de ideas me lleva a poner un poco m\u00e1s de mi parte, creo. El c\u00f3digo original, se puede descargar de <a href=\"http:\/\/www.glacialwanderer.com\/hobbyrobotics\/?p=12\" target=\"_blank\" rel=\"noopener noreferrer\"> este enlace<\/a>, si usted lo desea puede compararlo con el siguiente c\u00f3digo tiene \u00abcalado\u00bb.<\/span><\/p>\n<pre><span style=\"font-size: small;\">\/* \r\n* RTC Control v.01 \r\n* by &lt;http:\/\/www.combustory.com&gt; John Vaughters \r\n* Credit to: \r\n* Maurice Ribble: \r\n* http:\/\/www.glacialwanderer.com\/hobbyrobotics for RTC DS1307 code \r\n* \r\n* Con este c\u00f3digo se puede establecer la fecha y la hora, recuperar la fecha y \r\n* la hora y usar la memoria adicional de un chip DS1307 RTC. \r\n* El programa tambi\u00e9n pone todo el espacio de memoria suplementario a 0xff. \r\n* M\u00e9todo de Comunicaci\u00f3n Serie con el Arduino que, utiliza un Car\u00e1cter \r\n* May\u00fascula para cada orden descrita a continuaci\u00f3n. \r\n* Comandos: T(00-59)(00-59)(00-23)(1-7)(01-31)(01-12)(00-99) - \r\n* \r\n* T(sec)(min)(hour)(dayOfWeek)(dayOfMonth)(month)(year) - \r\n* T pone la fecha del chip RTC DS1307. \r\n* Ejemplo para poner la fecha y hora: \r\n* 02-Feb-09 19:57:11 para el dia 3 de la semana, \r\n* use la orden - T1157193020209 \/\/ T11 57 19 3 02 02 09. \r\n* Q(1-2) -:- (Q1) Consulta Memoria (Q2) RTC - Volcado Memoria \r\n* \r\n* Modificado el: 19-09-2009. \r\n* by &lt;http:\/\/www.hispavila.com&gt; V. Garcia vers.01.2 \r\n*\/ \r\n\r\n#include \"Wire.h\" \r\n#define DS1307_I2C_ADDRESS 0x68 \/\/ Esta es la address I2C \r\n\r\n\/\/ Variables Globales \r\nint command = 0; \/\/ Comando de car\u00e1cter, en formato ASCII, \r\n\/\/ enviados desde el puerto serie \r\nint i; \r\nlong previousMillis = 0; \/\/ almacenar\u00e1 la \u00faltima vez que Temp se ha actualizado\r\nbyte second, minute, hour, dayOfWeek, dayOfMonth, month, year; byte test; \r\n\r\n\/\/ Convierte n\u00fameros decimales normales a binario codificado decimal \r\nbyte decToBcd(byte val) \r\n{ \r\n return ( (val\/10*16) + (val%10) ); \r\n} \/\/ Convierte binario codificado decimal a n\u00fameros decimales normales \r\nbyte bcdToDec(byte val) \r\n{ \r\n return ( (val\/16*10) + (val%16) ); \r\n} \r\n\/\/ 1) Establece la fecha y la hora en el ds1307 \r\n\/\/ 2) Inicia el reloj \r\n\/\/ 3) Establece el modo de hora de reloj a 24 horas \r\n\/\/ Se supone que est\u00e1 pasando n\u00fameros v\u00e1lidos, probablemente \r\n\/\/ tendr\u00e1 que controlar poner n\u00fameros v\u00e1lidos. \r\n\r\nvoid setDateDs1307() { \/\/ Uso de (byte) de conversi\u00f3n ASCII y matem\u00e1ticas tipo para lograr el resultado. \r\nsecond = (byte) ((Serial.read() - 48) * 10 + (Serial.read() - 48)); \r\nminute = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); \r\nhour = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); \r\ndayOfWeek = (byte) (Serial.read() - 48); \r\ndayOfMonth = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); \r\nmonth = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); \r\nyear = (byte) ((Serial.read() - 48) *10 + (Serial.read() - 48)); Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.send(0x00); Wire.send(decToBcd(second)); \/\/ 0 a bit 7 Inicia el reloj Wire.send(decToBcd(minute)); \r\nWire.send(decToBcd(hour)); \/\/ Si quiere 12 horas am\/pm tiene que poner \r\n\/\/ bit 6 (tambi\u00e9n tiene que cambiar readDateDs1307) \u00a0 Wire.send(decToBcd(dayOfWeek)); \r\nWire.send(decToBcd(dayOfMonth)); \r\nWire.send(decToBcd(month)); \r\nWire.send(decToBcd(year)); \r\nWire.endTransmission(); \r\n} \/\/ Consigue la fecha y el tiempo del ds1307 e imprime el resultado \r\n\r\nvoid getDateDs1307() { \/\/ Resetea el registro puntero Wire.beginTransmission(DS1307_I2C_ADDRESS); Wire.send(0x00); Wire.endTransmission(); \r\nWire.requestFrom(DS1307_I2C_ADDRESS, 7); \/\/ A few of these need masks because certain bits are control bits \r\nsecond = bcdToDec(Wire.receive() &amp; 0x7f); \r\nminute = bcdToDec(Wire.receive()); \r\nhour = bcdToDec(Wire.receive() &amp; 0x3f); \/\/ Cambiar para 12 hora am\/pm. \r\ndayOfWeek = bcdToDec(Wire.receive()); \r\ndayOfMonth = bcdToDec(Wire.receive()); \r\nmonth = bcdToDec(Wire.receive()); \r\nyear = bcdToDec(Wire.receive()); \r\nif (hour &lt; 10) Serial.print(\"0\"); Serial.print(hour, DEC); \r\nSerial.print(\":\"); \r\nif (minute &lt; 10) Serial.print(\"0\"); Serial.print(minute, DEC); \r\nSerial.print(\":\"); \r\nif (second &lt; 10) Serial.print(\"0\"); Serial.print(second, DEC); \r\nSerial.print(\" \"); \r\nif (dayOfMonth &lt; 10) Serial.print(\"0\"); Serial.print(dayOfMonth, DEC); \r\nSerial.print(\"\/\"); \/\/ \r\nif (month &lt; 10) \r\nSerial.print(\"0\"); \/\/ esto para poner mes de 01 a 12 \/\/ \r\nSerial.print(month, DEC);\r\n \r\nswitch (month) \/\/ pone el nombre del mes \r\n{ \r\n  case 1: Serial.print(\"Ene\"); break; \r\n  case 2: Serial.print(\"Feb\"); break; \r\n  case 3: Serial.print(\"Mar\"); break; \r\n  case 4: Serial.print(\"Abr\"); break; \r\n  case 5: Serial.print(\"May\"); break; \r\n  case 6: Serial.print(\"Jun\"); break; \r\n  case 7: Serial.print(\"Jul\"); break; \r\n  case 8: Serial.print(\"Ago\"); break; \r\n  case 9: Serial.print(\"Sep\"); break; \r\n  case 10: Serial.print(\"Oct\"); break; \r\n  case 11: Serial.print(\"Nov\"); break; \r\n  case 12: Serial.print(\"Dic\"); break; \r\n} \r\nSerial.print(\"\/\"); \r\nSerial.print(\"20\"); if (year &lt; 10) Serial.print(\"0\"); Serial.print(year, DEC);\r\nSerial.print(\" Hoy es:\"); \r\n\/\/ Dia de la semana: \r\n\r\nswitch (dayOfWeek) \/\/ Esto pone nombre del dia \r\n{ \r\n case 1: Serial.println(\" Lunes\"); break; \r\n case 2: Serial.println(\" Martes\"); break; \r\n case 3: Serial.println(\" Miercoles\"); break; \r\n case 4: Serial.println(\" Jueves\"); break; \r\n case 5: Serial.println(\" Viernes\"); break; \r\n case 6: Serial.println(\" Sabado\"); break; \r\n case 7: Serial.println(\" Domingo\"); break; \r\n } \r\n} \r\nvoid setup() { \r\n Wire.begin(); \r\n Serial.begin(57600); \r\n} \r\n\r\nvoid loop() \r\n{ \r\n if (Serial.available()) \r\n  { \/\/ busca car\u00e1cter en serie y procesa si se encuentra \r\n  command = Serial.read(); \r\n  if (command == 84) { \/\/ Si command = \"T\" establecer fecha \r\n  setDateDs1307(); \r\n  getDateDs1307(); \r\n  Serial.println(\" \"); \r\n  } else \r\n  if (command == 81) { \/\/Si command = \"Q\" RTC1307 funciones de memoria \r\n  delay(100); \r\n  if (Serial.available()) { \r\n  command = Serial.read(); \r\n  if (command == 49) { \/\/ Si command = \"1\" RTC1307 Initialize Memory - \r\n \/\/ Todos los datos se establecen en 255 (0xff). \r\n \/\/ Por lo tanto 255 o 0 ser\u00e1 un valor no v\u00e1lido.  \r\n Wire.beginTransmission(DS1307_I2C_ADDRESS); \/\/255 ser\u00e1 el valor de inicio \r\n            \/\/ y 0 se cosider\u00e1 un error que se produce \r\n            \/\/ cuando el RTC est\u00e1 en modo de bater\u00eda. \r\n Wire.send(0x08); \/\/ Ajusta el registro puntero un poco m\u00e1s all\u00e1 \r\n    \/\/ los registros de fecha\/hora. \r\n for (i = 1; i &lt;= 27; i++) \r\n { \r\n  Wire.send(0xff); delay(100); \r\n  } \/\/ las lineas comentadas que siguen, no parecen necesarias. \r\n   \/\/ descomentar si procede. \r\n  Wire.endTransmission(); \r\n  getDateDs1307(); \/\/ Serial.println(\": RTC1307 Initialized Memory\"); \r\n } else \r\n if (command == 50) {\/\/ Si command=\"2\" RTC1307 Volcado de Memoria \r\n\r\n getDateDs1307(); \/\/ Serial.println(\": RTC 1307 Dump Begin\");  \r\n Wire.beginTransmission(DS1307_I2C_ADDRESS); \r\n Wire.send(0x00); \r\n Wire.endTransmission(); \r\n Wire.requestFrom(DS1307_I2C_ADDRESS, 64); \r\n for (i = 1; i &lt;= 64; i++) \r\n  { \r\n  test = Wire.receive(); \r\n  Serial.print(i); \r\n  Serial.print(\":\"); \r\n  Serial.println(test, DEC); \r\n  } \/\/ \r\n  Serial.println(\" RTC1307 Dump end\"); \r\n  } \r\n } \r\n} \r\n\/\/ Serial.print(\"Comando: \"); \r\n\/\/ Serial.println(command); \r\n\/\/ Caracter comando echo en ASCII que se envi\u00f3 \r\n} \r\n command = 0; \/\/ reset \r\n command delay(100); } \r\n\/\/******************The End****************\/<\/span><\/pre>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">Sin duda, hay algunos aportes que mejoran ostensiblemente el <a href=\"http:\/\/www.hispavila.com\/3ds\/atmega\/ds1307reloj_archivos\/rtc_ds1307_v02_1.rar\" target=\"_blank\" rel=\"noopener noreferrer\"> c\u00f3digo final<\/a>, tambi\u00e9n hay que destacar la presentaci\u00f3n de los datos extra\u00eddos. Es cierto que el c\u00f3digo es bastante extenso, sin embargo, considero que queda compensado con el resultado.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">No creo necesario reproducir aqu\u00ed lo que se ha descrito en el sitio del wiki, si bien es cierto que est\u00e1 en ingl\u00e9s.<\/span><\/p>\n<p style=\"margin-top: 12px; margin-bottom: 12px;\" align=\"justify\"><span style=\"font-size: small;\">En atenci\u00f3n a las reiteradas llamadas para que se especifique con detalle la PCB usada en el reloj, se ha ampliado la parte que corresponde al montaje del mismo.<\/span><\/p>\n<p style=\"line-height: 130%; margin-top: 6px; margin-bottom: 3px;\" align=\"left\"><span style=\"font-size: small;\">Como siempre, comentarios, criticas y sugerencias para mejorar este art\u00edculo, son bienvenidos y apreciados.<\/span><\/p>\n<p align=\"right\"><span style=\"font-size: small;\"><a href=\"#inici\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright\" src=\"http:\/\/s3.subirimagenes.com:81\/privadas\/previo\/thump_1251680uparrowsmall.gif\" alt=\"\" width=\"25\" height=\"19\" \/><\/a><\/span><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>UN RELOJ CON EL DS1307 &nbsp; Actualmente, cuando realizamos proyectos que requieren cierto nivel de flexibilidad, pensar en utilizar un microcontrolador siempre es una buena idea y ya puestos en &#8216;harina&#8217; (como decimos en Espa\u00f1a), siempre que el proyecto lo requiera, es interesante, la aplicaci\u00f3n de un RTC, es decir, un reloj en tiempo real. [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1376,"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,40],"tags":[81,151,131],"class_list":["post-306","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-microcontroladores","category-reloj-con-el-ds1307","tag-ds1307","tag-reloj-digital","tag-rtc"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/306","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=306"}],"version-history":[{"count":27,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/306\/revisions"}],"predecessor-version":[{"id":4841,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/posts\/306\/revisions\/4841"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media\/1376"}],"wp:attachment":[{"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/media?parent=306"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/categories?post=306"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.diarioelectronicohoy.com\/blog\/wp-json\/wp\/v2\/tags?post=306"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}