{"id":2624,"date":"2019-07-19T17:06:21","date_gmt":"2019-07-19T20:06:21","guid":{"rendered":"https:\/\/blog.usinainfo.com.br\/?p=2624"},"modified":"2019-08-07T15:55:05","modified_gmt":"2019-08-07T18:55:05","slug":"relogio-arduino-construa-o-seu-projeto","status":"publish","type":"post","link":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/","title":{"rendered":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto"},"content":{"rendered":"<p>Em diversos dispositivos como computador, microondas, televis\u00e3o e entre outros, utiliza-se a data e a hora para realiza\u00e7\u00e3o de alguns eventos. Logo, por meio dessas vari\u00e1veis, \u00e9 poss\u00edvel acionar e desligar cargas, monitorar vari\u00e1veis dentro de um intervalo de tempo e realizar diversas outras atividades. O post de hoje \u00e9 &#8220;<strong>Rel\u00f3gio Arduino<\/strong>: Construa o Seu&#8221;.<\/p>\n<div style=\"text-align: left;\">\n<p>Assim, para a realiza\u00e7\u00e3o dessas atividades, necessitamos implementar uma fun\u00e7\u00e3o temporizadora ou utilizar um chip que funcione como um rel\u00f3gio. Portanto, para solucionar essa necessidade, \u00e9 poss\u00edvel utilizar um CHIP Rel\u00f3gio de Tempo Real (Real Time Clock &#8211; RTC) e construir um rel\u00f3gio digital. Desse modo, poderemos aplic\u00e1-lo em qualquer dispositivo que necessite contar data e hora.<\/p>\n<\/div>\n<div style=\"text-align: left;\">\n<p>Trata-se de um rel\u00f3gio digital utilizando o chip RTC DS1307, para contar hora e data e apresentar as informa\u00e7\u00f5es no display LCD 16&#215;2. Al\u00e9m disso, o teclado matricial ser\u00e1 utilizado para configurar data e hora e o controle ser\u00e1 desenvolvido por meio do Arduino. O rel\u00f3gio desenvolvido \u00e9 apresentado na Figura 1.<\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<div><\/div>\n<div><\/div>\n<div><span style=\"font-size: 28px; font-weight: bold;\">Desenvolvimento do Rel\u00f3gio Arduino<\/span><\/div>\n<div>\n<p>Para o desenvolvimento do Rel\u00f3gio Digital, utilizaremos diversos perif\u00e9ricos conectados ao Arduino, conforme apresentados no esquema eletr\u00f4nico da Figura 2.<\/p>\n<\/div>\n<div>\n<div id=\"attachment_3169\" style=\"width: 807px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic.jpg\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3169\" class=\"wp-image-3169 \" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic.png\" alt=\"Esquema Eletr\u00f4nico do Rel\u00f3gio Digital com Arduino.\" width=\"797\" height=\"369\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic.png 3081w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic-300x139.png 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic-768x355.png 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/ElectronicSchematic-1024x474.png 1024w\" sizes=\"auto, (max-width: 797px) 100vw, 797px\" \/><\/a><p id=\"caption-attachment-3169\" class=\"wp-caption-text\">Figura 2 &#8211; Esquema Eletr\u00f4nico do Rel\u00f3gio Digital com Arduino.<\/p><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<div>Por meio desse projeto, voc\u00ea ser\u00e1 capaz de:<\/div>\n<ol>\n<li><em>Compreender o funcionamento do rel\u00f3gio de tempo real;<\/em><\/li>\n<li><em>Implementar uma fun\u00e7\u00e3o para ajuste de data e hora do rel\u00f3gio de tempo real;<\/em><\/li>\n<li><em>Implementar funcionalidade para exigir que o usu\u00e1rio configure a data e hora na primeira vez que o dispositivo \u00e9 ligado.<br \/>\n<\/em><\/li>\n<\/ol>\n<p>A seguir, juntamente com o circuito eletr\u00f4nico, disponibilizamos a lista completa dos componentes eletr\u00f4nicos utilizados nesse projeto.<\/p>\n<p>&nbsp;<\/p>\n<h2>Materiais para o Projeto Rel\u00f3gio Arduino<\/h2>\n<p>Todos os materiais apresentados a seguir est\u00e3o dispon\u00edveis em nosso site. Em caso de d\u00favidas, clique em Saiba mais e verifique os dados t\u00e9cnicos de cada componente utilizado.<\/p>\n<ul>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/rtc-arduino\/modulo-relogio-tempo-real-rtc-compacto-ds1307-2638.html\" target=\"_blank\" rel=\"noopener noreferrer\">Rel\u00f3gio de Tempo Real DS1307<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/teclado-matricial-e-buttons\/teclado-matricial-membrana-4x4-para-arduino-16-teclas-2303.html\" target=\"_blank\" rel=\"noopener noreferrer\">Teclado Matricial 4 x 4<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/displays-arduino\/display-lcd-16x2-com-fundo-azul-2304.html\" target=\"_blank\" rel=\"noopener noreferrer\">Display LCD 16 x 2<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/compativeis\/arduino-uno-r3-cabo-usb-3513.html\" target=\"_blank\" rel=\"noopener noreferrer\">Arduino UNO R3<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/protoboard-e-jumpers\/protoboard-830-pontos-para-montagem-de-projetos-3733.html\" target=\"_blank\" rel=\"noopener noreferrer\">Protoboard 830 furos<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/protoboard-e-jumpers\/jumpers-para-protoboard-kit-com-140-conectores-1373.html\" target=\"_blank\" rel=\"noopener noreferrer\">Jumpers R\u00edgidos<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/protoboard-e-jumpers\/jumpers-para-protoboard-kit-com-65-conectores-macho-macho-1374.html\" target=\"_blank\" rel=\"noopener noreferrer\">Jumpers Flex\u00edveis<\/a><\/li>\n<li>04 x <a href=\"https:\/\/www.usinainfo.com.br\/resistores\/resistor-10k-14w-kit-com-10-unidades-2975.html\" target=\"_blank\" rel=\"noopener noreferrer\">Resistor 10kR<\/a><\/li>\n<li>01 x <a href=\"https:\/\/www.usinainfo.com.br\/potenciometros-e-trimpots\/potenciometro-10k-com-eixo-estriado-para-projetos-2983.html\" target=\"_blank\" rel=\"noopener noreferrer\">Potenci\u00f4metro 10kR<\/a><\/li>\n<\/ul>\n<div>Agora, ser\u00e1 feita a explica\u00e7\u00e3o da l\u00f3gica implementada no projeto do rel\u00f3gio.<\/div>\n<h2><span style=\"font-size: 20px; font-weight: bold;\"><br \/>\n<\/span><span style=\"font-size: 20px;\">L\u00f3gica Principal do Rel\u00f3gio Digital Arduino<\/span><\/h2>\n<div>Primeiramente, devemos compreender as funcionalidades do nosso rel\u00f3gio digital:<\/div>\n<div>\n<ol>\n<li>Ser obrigat\u00f3rio ajustar data e hora na primeira vez que o rel\u00f3gio \u00e9 inicializado;<\/li>\n<li>Capacidade de ajuste de data e hora;<\/li>\n<li>Apresenta\u00e7\u00e3o em tempo real da data e hora na tela do display LCD 16 x 2.<\/li>\n<\/ol>\n<p>De acordo com os pontos acima, temos a seguinte solu\u00e7\u00e3o apresentada no c\u00f3digo abaixo.<\/p>\n<p>Primeiramente, foram realizadas todas as inclus\u00f5es de bibliotecas, defini\u00e7\u00e3o de objeto LCD e declara\u00e7\u00e3o de vari\u00e1veis. Agora, observe a defini\u00e7\u00e3o do valor 120 como MEMORIA. Esse valor ser\u00e1 utilizado para manipula\u00e7\u00e3o de infoma\u00e7\u00e3o na mem\u00f3ria EEPROM. Esse processo de manipula\u00e7\u00e3o ser\u00e1 apresentado durante a explica\u00e7\u00e3o da l\u00f3gica na fun\u00e7\u00e3o loop.<\/p>\n<p>Em seguida, declaramos o prot\u00f3tipo de duas fun\u00e7\u00f5es: LerTeclado(void) e AjustarHora(void). Em suma, essas duas fun\u00e7\u00f5es ser\u00e3o utilizadas para rastrear a tecla digitada e ajustar a data e hora, respectivamente.<\/p>\n<\/div>\n<pre class=\"lang:csharp decode:1 \" >\r\n#include &lt;DS1307.h&gt;\r\n#include &lt;Wire.h&gt;\r\n#include &lt;EEPROM.h&gt;\r\n#include &lt;LiquidCrystal.h&gt;\r\n\r\n#define MEMORIA 120\r\n\r\nconst int rs = 2, en = 3, d4 = 4, d5 = 5, d6 = 6, d7 = 7;\r\nLiquidCrystal lcd(rs, en, d4, d5, d6, d7);\r\n\r\nchar tempo[9] = &quot;&quot;;\r\nchar data[9] = &quot;&quot;;\r\n\r\nint DataTime[7];\r\n\r\nbyte SegAnt = 0, SegAtual = 0;\r\n\r\nbyte LerTeclado(void);\r\nvoid AjustarHora();\r\n\r\nvoid setup()\r\n{\r\nSerial.begin(9600);\r\nDS1307.begin();\r\n\/\/Config pins to control columns of the matrix keyboard\r\nfor(int tecla = 8; tecla &lt; 12; tecla++)\r\n{\r\npinMode(tecla, OUTPUT);\r\n}\r\n\r\n\/\/Config pins to read lines of the matrix keyboard\r\nfor(int tecla = 12; tecla &lt; 16; tecla++)\r\n{\r\npinMode(tecla, INPUT);\r\n}\r\n\r\nfor(int tecla = 8; tecla &lt; 12; tecla++)\r\n{\r\ndigitalWrite(tecla, LOW);\r\n}\r\n\r\nlcd.begin(16,2);\r\n}\r\n<\/pre>\n<p>Logo ap\u00f3s, realizamos as configura\u00e7\u00f5es na fun\u00e7\u00e3o void setup(). Primeiramente, inicializamos o nosso Rel\u00f3gio de Tempo Real e, em seguida, configuramos os pinos de conex\u00e3o do Teclado Matricial.<\/p>\n<p>&nbsp;<\/p>\n<h2>Ajuste Obrigat\u00f3rio na Primeira Inicializa\u00e7\u00e3o do Rel\u00f3gio<\/h2>\n<p>Por fim, entramos na fun\u00e7\u00e3o loop e realizamos o primeiro teste de inicializa\u00e7\u00e3o.\u00a0 De acordo com a condi\u00e7\u00e3o, verifica-se a posi\u00e7\u00e3o 120 (MEMORIA) da mem\u00f3ria EEPROM, a fim de saber se seu valor \u00e9 igual a 73.<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\nvoid loop()\r\n{\r\nif(EEPROM.read(MEMORIA) != 73)\r\n{\r\nAjustarHora();\r\nEEPROM.write(MEMORIA, 73);\r\n}\r\n\r\nDS1307.getDate(DataTime);\r\nSegAtual = DataTime[6];\r\n\r\nif(LerTeclado() == 10)\r\n{\r\nAjustarHora();\r\n}\r\n\r\nif(abs(SegAtual - SegAnt) &gt;= 1)\r\n{\r\nsprintf(tempo, &quot;%02d:%02d:%02d&quot;, DataTime[4], DataTime[5], DataTime[6]);\r\nsprintf(data, &quot;%02d\/%02d\/%02d&quot;, DataTime[2], DataTime[1], DataTime[0]);\r\n\r\nSerial.println(tempo);\r\nSerial.println(data);\r\n\r\nlcd.setCursor(4,1);\r\nlcd.print(tempo);\r\nlcd.setCursor(4,0);\r\nlcd.print(data);\r\nSegAnt = SegAtual;\r\n}\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>Se o valor for diferente, significa que \u00e9 a primeira vez que o usu\u00e1rio liga o sistema. Logo, a fun\u00e7\u00e3o AjustarHora ser\u00e1 chamada, para que o us\u00e1rio possa configurar data e hora, conforme apresentado na Figura 3.<\/p>\n<p>Desse modo, antes de gravar o c\u00f3digo do projeto, execute o c\u00f3digo para zerar todas as posi\u00e7\u00f5es da mem\u00f3ria EEPROM. Portanto, por meio dessa limpeza, ele ir\u00e1 entrar automaticamente na fun\u00e7\u00e3o, quando o usu\u00e1rio ligar o rel\u00f3gio pela primeira vez.<\/p>\n<div id=\"attachment_3319\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2.jpg\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3319\" class=\"wp-image-3319\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2.jpg\" alt=\"Ajuste de Hora do Rel\u00f3gio de Tempo Real com Arduino e Teclado.\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/relogio_usina2-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3319\" class=\"wp-caption-text\">Figura 3 &#8211; Ajuste de Hora do Rel\u00f3gio de Tempo Real com Arduino e Teclado.<\/p><\/div>\n<p>Portanto, ap\u00f3s a apresenta\u00e7\u00e3o desta tela, o usu\u00e1rio \u00e9 obrigado a ajustar hora, a data e o dia da semana. Por fim, ap\u00f3s esse processo, o sistema escreve o valor 73 na posi\u00e7\u00e3o 120 (MEMORIA).\u00a0 Desse modo, o sistema saber\u00e1 que os par\u00e2metros de tempo foram configurados na inicializa\u00e7\u00e3o.<\/p>\n<p>Em seguida, o sistema realiza a leitura dos dados de tempo do Rel\u00f3gio de Tempo Real e salva no vetor DataTime.<\/p>\n<p>Este vetor possui um total de 7 posi\u00e7\u00f5es. Portanto, podemos armazenar o Ano, M\u00eas, Data, Dia da Semana, Horas, Minutos e Segundos, respectivamente, da posi\u00e7\u00e3o 0 \u00e0 posi\u00e7\u00e3o 6.<\/p>\n<p>Logo, os valores s\u00e3o impressos nas strings tempo e data e, em seguida, s\u00e3o apresentados no LCD a cada 1 segundo.<\/p>\n<p>Por fim, realiza-se a leitura do teclado, a fim de verificar se o usu\u00e1rio pressionou a letra A. Caso a letra A esteja pressionada, o sistema chamar\u00e1 a fun\u00e7\u00e3o AjustarHora(). Desta forma, permitir\u00e1 o usu\u00e1rio ajustar a data e hora em qualquer momento.<\/p>\n<p>Agora, ser\u00e1 apresentada toda a estrutura interna da fun\u00e7\u00e3o AjustarHora() e sua comunica\u00e7\u00e3o com o rel\u00f3gio de tempo real.<\/p>\n<p>&nbsp;<\/p>\n<h2>Fun\u00e7\u00e3o de Ajuste de Hora e Data do Rel\u00f3gio de Tempo Real<\/h2>\n<p>A fun\u00e7\u00e3o de ajuste de hora e data \u00e9 a parte principal do projeto. Logo, por meio dela, o sistema realiza o processo de leitura dos dados do usu\u00e1rio e a comunica\u00e7\u00e3o com o rel\u00f3gio de tempo real. Portanto, nossa fun\u00e7\u00e3o \u00e9 dividida em 3 partes:<\/p>\n<ol>\n<li><em>Ajuste da Hora;<\/em><\/li>\n<li><em>Ajuste da Data;<\/em><\/li>\n<li><em>Ajuste do Dia da Semana.<\/em><\/li>\n<\/ol>\n<p>Primeiramente, foram declaradas todas as vari\u00e1veis utilizadas na fun\u00e7\u00e3o. Cada vari\u00e1vel ser\u00e1 apresentada ao longo da explica\u00e7\u00e3o da fun\u00e7\u00e3o.<\/p>\n<p>Ap\u00f3s isto, o pr\u00f3ximo passo foi realizar a aquisi\u00e7\u00e3o dos dados do CHIP. Portanto, esses dados ser\u00e3o armazenados no vetor DadosTempo de 7 posi\u00e7\u00f5es e ser\u00e3o impressos nas strings tempo e data. Por meio dessas strings, os dados ser\u00e3o apresentados no LCD (Linha 018 a 021).<\/p>\n<p>Nas linhas 023 a 030 os dados do vetor DadosTempo ser\u00e3o copiados para o vetor auxiliar Times. Atrav\u00e9s deste vetor, ser\u00e1 poss\u00edvel manipular os dados lidos. Por fim, o sistema separa os dados de horas e minutos em dezenas e unidades. Dessa forma, cada d\u00edgito poder\u00e1 ser manipulado na etapa de configura\u00e7\u00e3o das horas.<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\nbyte LerTeclado(void)\r\n{\r\nbyte teclado[4][4] = {\r\n{1,2,3,10},\r\n{4,5,6,11},\r\n{7,8,9,12},\r\n{14,0,15,13}};\r\n\r\nbyte coluna[4] = {8,9,10,11};\r\nbyte linha[4] = {12,13,14,15};\r\nbool tecla;\r\n\r\nbyte digito_tecla = 16;\r\n\r\nfor(byte y = 0; y &lt;= 3; y++)\r\n{\r\ndigitalWrite(coluna[y], LOW);\r\n}\r\n\r\nfor(byte y = 0; y &lt;= 3; y++)\r\n{\r\n\r\ndigitalWrite(coluna[y], HIGH);\r\n\r\nfor(byte x = 0; x &lt;= 3; x++)\r\n{\r\ntecla = digitalRead(linha[x]);\r\n\r\nif(tecla == 1)\r\n{\r\ndigito_tecla = teclado[x][y];\r\nreturn digito_tecla;\r\n}\r\n}\r\n\r\ndigitalWrite(coluna[y], LOW);\r\n}\r\n\r\nreturn digito_tecla;\r\n}\r\n\r\nvoid AjustarHora()\r\n{\r\nint times[6];\r\nint DadosTempo[7];\r\nbool controle = 0;\r\nbool EstadoSobe = 0, EstadoDesce = 0;\r\n\r\nbyte cont = 0;\r\nbyte number = 0;\r\nint digitos[6];\r\nbyte PosCursor = 0;\r\n\r\nbool Validate = 0;\r\nchar tempo[7] = &quot;&quot;;\r\nchar data[15] = &quot;&quot;;\r\nchar DiaSemana[7][15] = {&quot;-Domingo&quot;, &quot;-Segunda-Feira&quot;, &quot;-Terca-Feira&quot;, &quot;-Quarta-Feira&quot;, &quot;-Quinta-Feira&quot;, &quot;-Sexta-Feira&quot;, &quot;-Sabado&quot;};\r\n\r\nDS1307.getDate(DadosTempo);\r\n\r\nsprintf(tempo, &quot;%02d:%02dh&quot;, DadosTempo[4], DadosTempo[5]);\r\nsprintf(data, &quot;%02d\/%02d\/%02d&quot;, DadosTempo[2], DadosTempo[1], DadosTempo[0]);\r\n\r\ntimes[4] = DadosTempo[4]; \/\/Armazena a hora em times[4]\r\ntimes[5] = DadosTempo[5]; \/\/Armazena os minutos em times[5]\r\ntimes[3] = DadosTempo[3]; \/\/Armazena o dia da semana em times[3]\r\ntimes[2] = DadosTempo[2]; \/\/Armazena a Data em times[2]\r\n\r\ntimes[1] = DadosTempo[1]; \/\/Armazena o mes em times[1]\r\ntimes[0] = DadosTempo[0]; \/\/Armazena o ano em times[0]\r\ntimes[6] = DadosTempo[6]; \/\/Armazena os segundos em times[6]\r\n\r\ndigitos[0] = times[4]\/10; \/\/Armazena a Dezena das Horas\r\ndigitos[1] = times[4]%10; \/\/Armazena a Unidade das Horas\r\ndigitos[2] = times[5]\/10; \/\/Armazena a Dezena dos Minutos\r\ndigitos[3] = times[5]%10; \/\/Armazena a Unidade dos Minutos\r\n\r\ndo\r\n{\r\n\r\nlcd.setCursor(0,0);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(2,0);\r\nlcd.print(&quot;Ajustar hora:&quot;);\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(5,1);\r\nlcd.print(tempo);\r\nPosCursor = 5;\r\nValidate = 0;\r\n\r\ndo\r\n{\r\nnumber = LerTeclado();\r\n\r\ndelay(100);\r\n\r\nif( (number &gt;= 0 &amp;&amp; number &lt;= 9) &amp;&amp; (controle == 0) &amp;&amp; (cont &lt; 4) )\r\n{Serial.println(number);\r\ndigitos[cont] = number;\r\ncont++;\r\ncontrole = 1;\r\n\r\nlcd.setCursor(PosCursor,1);\r\n\r\nlcd.print(number);\r\nPosCursor++;\r\n\r\nif(cont == 2 || cont == 4)\r\n{\r\nPosCursor = PosCursor + 1;\r\n}\r\n}\r\n\r\nif(number == 16 &amp;&amp; controle == 1)\r\n{\r\ncontrole = 0;\r\n}\r\n\r\nif(number == 12)\r\n{\r\nfor(cont = 0; cont &lt; 4; cont++)\r\n{\r\ndigitos[cont] = 0;\r\n}\r\n\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(5,1);\r\nlcd.print(&quot;00:00h&quot;);\r\nPosCursor = 5;\r\ncont = 0;\r\n\r\nfor(byte i = 0; i &lt; 4; i++)\r\n{\r\ndigitos[i] = 0;\r\n}\r\n}\r\n\r\n}while(number != 13);\r\n\r\ntimes[4] = (digitos[0]*10) + digitos[1];\r\ntimes[5] = (digitos[2]*10) + digitos[3];\r\n\r\nSerial.println(times[4]);\r\nSerial.println(times[5]);\r\n\r\nif((times[4] &lt; 0 || times[4] &gt; 23) || (times[5] &lt; 0 || times[5] &gt; 59))\r\n{\r\nlcd.clear();\r\nlcd.setCursor(6,0);\r\nlcd.print(&quot;Hora&quot;);\r\nlcd.setCursor(4,1);\r\nlcd.print(&quot;Invalida&quot;);\r\ndelay(1500);\r\nValidate = 1;\r\n\r\nlcd.clear();\r\n\r\nlcd.setCursor(0,0);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(1,0);\r\nlcd.print(&quot;Ajustar horas:&quot;);\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(5,1);\r\nlcd.print(&quot;00:00h&quot;);\r\n\r\nsprintf(tempo, &quot;%02d:%02dh&quot;, 0, 0);\r\n\r\nPosCursor = 5;\r\n\r\ncont = 0;\r\n\r\nfor(byte i = 0; i &lt; 4; i++)\r\n{\r\ndigitos[i] = 0;\r\n}\r\n\r\nfor(byte i = 0; i &lt; 6; i++)\r\n{\r\ntimes[i] = 0;\r\n}\r\n}\r\n\r\n}while(Validate == 1);\r\n\r\ndo\r\n{\r\nnumber = LerTeclado();\r\ndelay(200);\r\n}while(number != 16);\r\n\r\n\r\n\/*----------------------------------------Configuracao da Data-----------------------------------------------*\/\r\nPosCursor = 4;\r\n\r\ndo\r\n{\r\n\/\/Transformacao dos digitos da data para dezenas e unidades\r\ndigitos[0] = times[2]\/10; \/\/Armazena a Dezena da Data\r\ndigitos[1] = times[2]%10; \/\/Armazena a Unidade da Data\r\ndigitos[2] = times[1]\/10; \/\/Armazena a Dezena do Mes\r\ndigitos[3] = times[1]%10; \/\/Armazena a Unidade do Mes\r\ndigitos[4] = times[0]\/10; \/\/Armazena a Dezena do Ano\r\ndigitos[5] = times[0]%10; \/\/Armazena a Unidade do Ano\r\nValidate = 0;\r\n\r\nsprintf(data, &quot;%02d\/%02d\/%02d&quot;, times[2], times[1], times[0]);\r\nlcd.clear();\r\nlcd.setCursor(0,0);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(2,0);\r\nlcd.print(&quot;Ajustar Data:&quot;);\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(4,1);\r\nlcd.print(data);\r\nPosCursor = 4;\r\ncont = 0;\r\n\r\ndo\r\n{\r\n\r\nnumber = LerTeclado();\r\ndelay(100);\r\n\r\nif( (number &gt;= 0 &amp;&amp; number &lt;= 9) &amp;&amp; (controle == 0) &amp;&amp; (cont &lt; 6) )\r\n{\r\ndigitos[cont] = number;\r\n\r\ncont++;\r\ncontrole = 1;\r\n\r\nlcd.setCursor(PosCursor,1);\r\n\r\nlcd.print(number);\r\nPosCursor++;\r\n\r\nif(cont == 2 || cont == 4)\r\n{\r\nPosCursor = PosCursor + 1;\r\n}\r\n}\r\n\r\nif(number == 16 &amp;&amp; controle == 1)\r\n{\r\ncontrole = 0;\r\n}\r\n\r\nif(number == 12)\r\n{\r\nfor(cont = 0; cont &lt; 6; cont++)\r\n{\r\ndigitos[cont] = 0;\r\n}\r\n\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(4,1);\r\nlcd.print(&quot;00\/00\/00&quot;);\r\nPosCursor = 4;\r\ncont = 0;\r\n}\r\n\r\n}while(number != 13);\r\n\r\ntimes[2] = (digitos[0]*10) + digitos[1]; \/\/Transformando os numeros lidos para data do mes em dois d\u00edgitos\r\ntimes[1] = (digitos[2]*10) + digitos[3]; \/\/Transformando os numeros lidos para mes em dois d\u00edgitos\r\ntimes[0] = (digitos[4]*10) + digitos[5]; \/\/Transformando os numeros lidos para ano em dois d\u00edgitos\r\n\r\nif((times[2] &lt;= 0 || times[2] &gt; 31) || (times[1] &lt;= 0 || times[1] &gt; 12) || times[0] &lt;= 0 || (times[2] &gt; 28 &amp;&amp; times[1] == 2))\r\n{\r\nlcd.clear();\r\nlcd.setCursor(6,0);\r\nlcd.print(&quot;Data&quot;);\r\nlcd.setCursor(4,1);\r\nlcd.print(&quot;Invalida&quot;);\r\ndelay(1500);\r\nValidate = 1;\r\n\r\nlcd.clear();\r\n\r\nlcd.setCursor(0,0);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(2,0);\r\nlcd.print(&quot;Ajustar Data:&quot;);\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(3,1);\r\nlcd.print(&quot;00\/00\/00&quot;);\r\nPosCursor = 5;\r\ncont = 0;\r\n\r\nfor(byte i = 0; i &lt; 6; i++)\r\n{\r\ndigitos[i] = 0;\r\n}\r\n\r\nfor(byte i = 0; i &lt; 3; i++)\r\n{\r\ntimes[i] = 0;\r\n}\r\n\r\n}\r\n\r\n}while(Validate == 1);\r\n\r\ndo\r\n{\r\nnumber = LerTeclado();\r\ndelay(200);\r\n}while(number != 16);\r\n\r\n\/*----------------------------------------------Configuracao dos Dias da Semana------------------------------------------------------*\/\r\nlcd.clear();\r\nsigned ContDias = times[3];\r\n\r\nlcd.setCursor(1,0);\r\nlcd.print(&quot;Ajuste o Dia:&quot;);\r\nlcd.setCursor(0,1);\r\nlcd.print(DiaSemana[ContDias]);\r\n\r\ndo\r\n{\r\nnumber = LerTeclado();\r\ndelay(100);\r\n\r\nif(number == 10 &amp;&amp; EstadoSobe == 0)\r\n{\r\nContDias++;\r\n\r\nif(ContDias &gt; 6)\r\n{\r\nContDias = 0;\r\n}\r\n\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(1,1);\r\nlcd.print(DiaSemana[ContDias]);\r\nEstadoSobe = 1;\r\n}\r\n\r\nif(number == 16 &amp;&amp; EstadoSobe == 1)\r\n{\r\nEstadoSobe = 0;\r\n}\r\n\r\nif(number == 11 &amp;&amp; EstadoDesce == 0)\r\n{\r\nContDias--;\r\n\r\nif(ContDias &lt; 0)\r\n{\r\nContDias = 6;\r\n}\r\n\r\nlcd.setCursor(0,1);\r\nlcd.print(&quot; &quot;);\r\nlcd.setCursor(1,1);\r\nlcd.print(DiaSemana[ContDias]);\r\nEstadoDesce = 1;\r\n}\r\n\r\nif(number == 16 &amp;&amp; EstadoDesce == 1)\r\n{\r\nEstadoDesce = 0;\r\n}\r\n\r\n}while(number != 13);\r\n\r\ntimes[3] = ContDias;\r\n\r\nlcd.clear();\r\n\r\nDS1307.setDate(times[0],times[1],times[2],times[3],times[4],times[5],00);\/\/ano,mes,dia,semana,horas,minutos,segundo\r\n}\r\n<\/pre>\n<p>Portanto, o sistema entrar\u00e1 no loop do while(), apresentar\u00e1 a mensagem &#8220;Ajustar Horas&#8221; (Linha 040 a 043). Em seguida, apresentar\u00e1 a hora instant\u00e2nea no LCD, conforme apresentado na Figura 4.<\/p>\n<div id=\"attachment_3324\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334.jpg\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3324\" class=\"wp-image-3324\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334.jpg\" alt=\"Tela de Ajuste das Horas\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214334-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3324\" class=\"wp-caption-text\">Figura 4 &#8211; Tela de Ajuste das Horas.<\/p><\/div>\n<p>A seguir, voc\u00ea aprender\u00e1 o processo de leitura do teclado matricial.<\/p>\n<p>&nbsp;<\/p>\n<h3>Processo de Leitura do Teclado Matricial 4 x 4<\/h3>\n<p>Ap\u00f3s a apresenta\u00e7\u00e3o da mensagem, o fluxo entrar\u00e1 no la\u00e7o do while() e\u00a0 iniciar\u00e1 o processo de leitura do teclado.<\/p>\n<p>A leitura \u00e9 realizada por meio da fun\u00e7\u00e3o LerTeclado(). Esta fun\u00e7\u00e3o \u00e9 respons\u00e1vel por realizar a varredura do teclado matricial e retornar um valor para cada tecla digitada. Caso nenhuma tecla esteja pressionada, a fun\u00e7\u00e3o retorna o valor 16.<\/p>\n<p>Na Tabela a seguir, \u00e9 apresentado o valor retornado por cada tecla utilizada.<\/p>\n<div id=\"attachment_3325\" style=\"width: 898px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/valores_do_teclado.jpg\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3325\" class=\"size-full wp-image-3325\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/valores_do_teclado.jpg\" alt=\"Valores Retornados pela Fun\u00e7\u00e3o d Teclado Matricial\" width=\"888\" height=\"78\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/valores_do_teclado.jpg 888w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/valores_do_teclado-300x26.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/valores_do_teclado-768x67.jpg 768w\" sizes=\"auto, (max-width: 888px) 100vw, 888px\" \/><\/a><p id=\"caption-attachment-3325\" class=\"wp-caption-text\">Tabela 1 &#8211; Valores Retornados pela Fun\u00e7\u00e3o d Teclado Matricial<\/p><\/div>\n<p>Caso queira compreender\u00a0 o processo de uso e implementa\u00e7\u00e3o da fun\u00e7\u00e3o, acesse o <a href=\"https:\/\/www.usinainfo.com.br\/blog\/teclado-matricial-de-membrana\/\" target=\"_blank\" rel=\"noopener noreferrer\">Artigo de Teclado Matricial de Membrana 4 x 4.<\/a><\/p>\n<p>Logo, ap\u00f3s a leitura e atribui\u00e7\u00e3o do valor \u00e0 vari\u00e1vel number, o sistema verifica a condi\u00e7\u00e3o da linha 057. Por meio desta condi\u00e7\u00e3o, avalia-se 3 pontos:<\/p>\n<ol>\n<li>Verifica se o valor retornado \u00e9 um n\u00famero entre 0 e 9;<\/li>\n<li>Verifica se a vari\u00e1vel controle \u00e9 igual a 1. Esta vari\u00e1vel \u00e9 utilizada para controlar o acesso do fluxo de c\u00f3digo internamente \u00e0 condi\u00e7\u00e3o. Ela permite que o fluxo entre apenas uma vez, quando o usu\u00e1rio pressiona um n\u00famero.<\/li>\n<li>Verifica se o valor de cont \u00e9 igual a 4. Essa vari\u00e1vel \u00e9 utilizada para controlar a quantidade de d\u00edgitos inseridos pelo usu\u00e1rio. Pois s\u00e3o 2 d\u00edgitos para horas e 2 d\u00edgitos para minutos. Desse modo, evita-se que o usu\u00e1rio digite mais do que 4 valores.<\/li>\n<\/ol>\n<p>Portanto, caso a condi\u00e7\u00e3o seja verdadeira, o valor digitado ser\u00e1 armazenado no vetor\u00a0<em>digitos.\u00a0<\/em>Dessa maneira, observa-se que a vari\u00e1vel <em>cont<\/em> aponta sempre para as posi\u00e7\u00f5es do vetor. Logo, ap\u00f3s o incremento da vari\u00e1vel <em>cont<\/em>, atribui-se 1 \u00e0 vari\u00e1vel <em>controle<\/em>.<\/p>\n<p>J\u00e1 que a vari\u00e1vel <em>controle <\/em>possui valor igual a 1, o fluxo de c\u00f3digo n\u00e3o entrar\u00e1 na condi\u00e7\u00e3o. Desse modo, o sistema ir\u00e1 ler o n\u00famero pressionado uma \u00fanica vez.<\/p>\n<p>&nbsp;<\/p>\n<h3>Op\u00e7\u00e3o para reiniciar o processo de entrada de novos n\u00fameros no sistema<\/h3>\n<p>Em seguida, h\u00e1 uma condi\u00e7\u00e3o na Linha 074. Esta condi\u00e7\u00e3o \u00e9 utilizada para verificar quando nenhuma tecla est\u00e1 sendo pressionada pelo usu\u00e1rio.<\/p>\n<p>Portanto, ser\u00e1 atribu\u00eddo valor 0 \u00e0 vari\u00e1vel controle, para indicar que o sistema poder\u00e1 entrar na condi\u00e7\u00e3o novamente.\u00a0 Ou seja, o sistema est\u00e1 habilitado a receber um novo valor num\u00e9rico na condi\u00e7\u00e3o de leitura de n\u00fameros.<\/p>\n<p>Em seguida, temos a condi\u00e7\u00e3o para limpar os valores de hora digitados pelo usu\u00e1rio, caso o usu\u00e1rio pressione a tecla C. Isto serve para casos em que o usu\u00e1rio digitou algum valor errado ou deseja limpar a tela. O resultado \u00e9 apresentado na Figura 5. Analisando a condi\u00e7\u00e3o, \u00e9 poss\u00edvel ver que o vetor digitos e a tela ter\u00e3o seus valores zerados.<\/p>\n<div id=\"attachment_3330\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904.jpg\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3330\" class=\"wp-image-3330\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904.jpg\" alt=\"Valores Zerados para Data\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_001904-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3330\" class=\"wp-caption-text\">Figura 5 &#8211; Data Zerada pelo Usu\u00e1rio.<\/p><\/div>\n<p>Finamente, h\u00e1 a condi\u00e7\u00e3o de verifica\u00e7\u00e3o do la\u00e7o do while, para verificar se o usu\u00e1rio pressionou a tecla D (Valor 13). Caso a tecla D esteja pressionada, o fluxo sair\u00e1 do la\u00e7o, formar\u00e1 os valores de hora e minuto. Em seguida, armazenar\u00e1 os valores nas posi\u00e7\u00f5es 4 e 5 do vetor times, respectivamente.<\/p>\n<p>&nbsp;<\/p>\n<h3>Valida\u00e7\u00e3o da Hora e Minuto inseridos pelo Usu\u00e1rio<\/h3>\n<p>Ap\u00f3s a forma\u00e7\u00e3o dos d\u00edgitos inseridos em hora e minutos, \u00e9 importante validar os valores digitados. Isto evita que o usu\u00e1rio insira um valor errado no sistema, conforme apresentado na Figura 6.<\/p>\n<div id=\"attachment_3326\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831.jpg\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3326\" class=\"wp-image-3326\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831.jpg\" alt=\"Inserindo Hora Inv\u00e1lida no Sistema.\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190625_214831-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3326\" class=\"wp-caption-text\">Figura 6 &#8211; Inserindo Hora Inv\u00e1lida no Sistema.<\/p><\/div>\n<p>Ap\u00f3s o usu\u00e1rio inserir uma hora v\u00e1lida ou inv\u00e1lida, o sistema ir\u00e1 validar a hora e minuto inseridos. Caso a hora seja inv\u00e1lida, o sistema apresenta a mensagem Hora Inv\u00e1lida, conforme apresentado na Figura 7.<\/p>\n<div id=\"attachment_3327\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649.jpg\" data-rel=\"lightbox-image-6\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3327\" class=\"wp-image-3327\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649.jpg\" alt=\"Mensagem de Hora Inv\u00e1lida\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_000649-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3327\" class=\"wp-caption-text\">Figura 7 &#8211; Mensagem de Hora Inv\u00e1lida.<\/p><\/div>\n<p>Em seguida, atribuir\u00e1 o valor 1 \u00e0 vari\u00e1vel <em>Validate<\/em>. Esta vari\u00e1vel \u00e9 utilizada para sinalizar que a hora digitada foi inv\u00e1lida. Portanto, o sistema ir\u00e1 zerar as 4 posi\u00e7\u00f5es iniciais do vetor d\u00edgitos e voltar\u00e1 para o in\u00edcio. Desse modo, o usu\u00e1rio ser\u00e1 obrigado a digitar valores v\u00e1lidos para hora e minuto.<\/p>\n<p>&nbsp;<\/p>\n<h3>Configura\u00e7\u00e3o da Data do Sistema<\/h3>\n<p>O processo de configura\u00e7\u00e3o da data \u00e9 semelhante \u00e0 configura\u00e7\u00e3o da hora. A \u00fanica diferen\u00e7a \u00e9 que o usu\u00e1rio precisar\u00e1 digitar 6 d\u00edgitos: dias, m\u00eas e ano.<\/p>\n<p>Agora, observe a Figura 8, onde ser\u00e1 apresentada a data atual e permitir\u00e1 o usu\u00e1rio inserir novos valores de ajuste.<\/p>\n<div id=\"attachment_3329\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619.jpg\" data-rel=\"lightbox-image-7\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3329\" class=\"wp-image-3329\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619.jpg\" alt=\"Tela de Ajuste da Data do Rel\u00f3gio\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143619-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3329\" class=\"wp-caption-text\">Figura 8 &#8211; Tela de Ajuste da Data do Rel\u00f3gio.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>Caso for necess\u00e1rio, o usu\u00e1rio poder\u00e1 pressionar a tecla C e zerar os valores da data, conforme apresentado na Figura 9.<\/p>\n<div id=\"attachment_3359\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306.jpg\" data-rel=\"lightbox-image-8\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3359\" class=\"wp-image-3359\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306.jpg\" alt=\"Data Zerada pelo Usu\u00e1rio.\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/20190626_014306-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3359\" class=\"wp-caption-text\">Figura 9 &#8211; Data Zerada pelo Usu\u00e1rio.<\/p><\/div>\n<p>&nbsp;<\/p>\n<p>Por fim, ap\u00f3s digitar a nova data do sistema, ser\u00e1 feita uma valida\u00e7\u00e3o. Caso seja inv\u00e1lida, o sistema apresentar\u00e1 a seguinte mensagem conforme apresentada na Figura 10.<\/p>\n<div id=\"attachment_3331\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346.jpg\" data-rel=\"lightbox-image-9\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3331\" class=\"wp-image-3331\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346.jpg\" alt=\"Data Inv\u00e1lida\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_014346-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3331\" class=\"wp-caption-text\">Figura 10 &#8211; Data Inv\u00e1lida do Sistema.<\/p><\/div>\n<p>Portanto, o usu\u00e1rio \u00e9 for\u00e7ado a digitar uma nova data v\u00e1lida. Ap\u00f3s inserir uma data v\u00e1lida, o sistema sair\u00e1 do loop do while e iniciar\u00e1 a etapa de configura\u00e7\u00e3o do dia da semana.<\/p>\n<p>&nbsp;<\/p>\n<h3>Configurando o dia da semana do Rel\u00f3gio Arduino<\/h3>\n<div>\n<p>Os dias da semana s\u00e3o configurados utilizando as teclas A e B. A tecla A \u00e9 utilizada para avan\u00e7ar de domingo a s\u00e1bado e a B \u00e9 utilizada para retornar no sentido contr\u00e1rio. A seguir, temos a por\u00e7\u00e3o de c\u00f3digo que \u00e9 utilizada para configurar o dia da semana.<\/p>\n<p>A vari\u00e1vel ContDias ser\u00e1 incrementada ou decrementada com base nas teclas A e B. Seu valor ser\u00e1 utilizado para apontar para as posi\u00e7\u00f5es do vetor <em>DiaSemana.\u00a0<\/em>Portanto, os valores aparecer\u00e3o na tela e o usu\u00e1rio poder\u00e1 selecionar o dia correto da semana.<\/p>\n<pre class=\"lang:csharp decode:1 \" >\r\n\/*----------------------------------------------Configuracao dos Dias da Semana------------------------------------------------------*\/\r\n          lcd.clear();\r\n          signed ContDias = times[3];\r\n          \r\n          lcd.setCursor(1,0);\r\n          lcd.print(&quot;Ajuste o Dia:&quot;);\r\n          lcd.setCursor(0,1);\r\n          lcd.print(DiaSemana[ContDias]); \r\n\r\n          do\r\n          {\r\n            number = LerTeclado();\r\n            delay(100);\r\n\r\n            if(number == 10  EstadoSobe == 0)\r\n            {\r\n              ContDias++;    \r\n\r\n              if(ContDias  6)\r\n              {\r\n                ContDias = 0;  \r\n              }\r\n              \r\n              lcd.setCursor(0,1);\r\n              lcd.print(&quot;                &quot;);\r\n              lcd.setCursor(1,1);\r\n              lcd.print(DiaSemana[ContDias]);   \r\n              EstadoSobe = 1;       \r\n            }\r\n\r\n            if(number == 16  EstadoSobe == 1)\r\n            {\r\n              EstadoSobe = 0;\r\n            }\r\n\r\n            if(number == 11  EstadoDesce == 0)\r\n            {\r\n              ContDias--;\r\n\r\n              if(ContDias  0)\r\n              {\r\n                ContDias = 6;  \r\n              }\r\n              \r\n              lcd.setCursor(0,1);\r\n              lcd.print(&quot;                &quot;);\r\n              lcd.setCursor(1,1);\r\n              lcd.print(DiaSemana[ContDias]);  \r\n              EstadoDesce = 1;\r\n            }\r\n\r\n            if(number == 16  EstadoDesce == 1)\r\n            {\r\n              EstadoDesce = 0;\r\n            }\r\n            \r\n          }while(number != 13);\r\n          \r\n            times[3] = ContDias;\r\n\r\n            lcd.clear();\r\n            \r\n           DS1307.setDate(times[0],times[1],times[2],times[3],times[4],times[5],00);\/\/ano,mes,dia,semana,horas,minutos,segundo\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p>A seguir temos a tela de configura\u00e7\u00e3o do dia da semana apresentada na Figura 11.<\/p>\n<div id=\"attachment_3332\" style=\"width: 702px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735.jpg\" data-rel=\"lightbox-image-10\" data-rl_title=\"\" data-rl_caption=\"\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-3332\" class=\"wp-image-3332\" title=\"\" src=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735.jpg\" alt=\"Ajuste do dia da Semana\" width=\"692\" height=\"519\" srcset=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735.jpg 1440w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735-300x225.jpg 300w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735-768x576.jpg 768w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735-1024x768.jpg 1024w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735-322x242.jpg 322w, https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/20190626_143735-320x240.jpg 320w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/a><p id=\"caption-attachment-3332\" class=\"wp-caption-text\">Figura 11 &#8211; Ajuste do dia da Semana.<\/p><\/div>\n<p>&nbsp;<\/p>\n<\/div>\n<div>Ap\u00f3s a sele\u00e7\u00e3o do dia da semana, o usu\u00e1rio deve pressionar a tecla D, para finalizar o processo de ajuste.<\/div>\n<div><\/div>\n<div>Em seguida, todos os dados ser\u00e3o transferidos para o <a href=\"https:\/\/www.usinainfo.com.br\/rtc-arduino\/modulo-relogio-tempo-real-rtc-compacto-ds1307-2638.html\">RTC DS1307<\/a>, por meio da fun\u00e7\u00e3o <em>DS1307.setDate. <\/em>Observe que todos os par\u00e2metros ajustados de Data e Hora s\u00e3o passados como par\u00e2metros na fun\u00e7\u00e3o.<\/div>\n<div><\/div>\n<div>Ap\u00f3s a execu\u00e7\u00e3o desse comando, o fluxo retorna para a fun\u00e7\u00e3o void loop e inicia o processo de apresenta\u00e7\u00e3o de data e hora.<\/div>\n<div><\/div>\n<div><\/div>\n<div><\/div>\n<h2>Conclus\u00e3o<\/h2>\n<p>Por meio desse rel\u00f3gio arduino foram implementadas diversas fun\u00e7\u00f5es, que permitem aprender e implementar recursos inteligentes. Entre esses recursos, destacamos: sistema de valida\u00e7\u00e3o de horas, de data e sistema de ajuste de hora e data em tempo real de execu\u00e7\u00e3o.<\/p>\n<p>Al\u00e9m desses recursos, \u00e9 poss\u00edvel extender a aplica\u00e7\u00e3o do rel\u00f3gio arduino para sistemas de automa\u00e7\u00e3o. Entre esses sistemas que utilizam data e hora, temos: irrigador autom\u00e1tico, alerta de uso para fog\u00e3o, alarme escolar e muitos outros.<\/p>\n<p>O C\u00f3digo desenvolvido encontra-se <span style=\"color: #800080;\"><a style=\"color: #800080;\" href=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/07\/usinainfo_relogio.zip\" target=\"_blank\" rel=\"noopener noreferrer\">nesse link<\/a><\/span> e voc\u00ea pode us\u00e1-lo para criar novos projetos.<\/p>\n<p>Conhe\u00e7a toda Linha de Produtos Arduino no Site da <span style=\"color: #800080;\"><a style=\"color: #800080;\" href=\"https:\/\/www.usinainfo.com.br\/arduino-e-eletroeletronica-74\" target=\"_blank\" rel=\"noopener noreferrer\">UsinaInfo.<\/a><\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em diversos dispositivos como computador, microondas, televis\u00e3o e entre outros, utiliza-se a data e a hora para realiza\u00e7\u00e3o de alguns eventos. Logo, por meio dessas vari\u00e1veis, \u00e9 poss\u00edvel acionar e desligar cargas, monitorar vari\u00e1veis dentro de um intervalo de tempo e realizar diversas outras atividades. O post de hoje \u00e9 &#8220;Rel\u00f3gio Arduino: Construa o Seu&#8221;. Assim, para a realiza\u00e7\u00e3o dessas atividades, necessitamos implementar uma fun\u00e7\u00e3o temporizadora ou utilizar um chip que funcione como um rel\u00f3gio. Portanto, para solucionar essa necessidade, \u00e9 poss\u00edvel utilizar um CHIP Rel\u00f3gio de Tempo Real (Real Time Clock &#8211; RTC) e construir um rel\u00f3gio digital. Desse modo, poderemos aplic\u00e1-lo em qualquer dispositivo que necessite contar data e hora. Trata-se de um rel\u00f3gio digital utilizando o chip [&hellip;]<\/p>\n","protected":false},"author":13,"featured_media":3153,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,1],"tags":[62,63,66,65,64,67],"class_list":["post-2624","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arduino","category-projetos","tag-como-construir-um-relogio-com-arduino","tag-como-construir-um-relogio-com-rtc-ds1307","tag-como-criar-um-relogio-digital-com-arduino","tag-como-fazer-uma-aplicacao-com-o-rtc-e-arduino","tag-como-programar-o-rtc-com-arduino","tag-projeto-com-arduino-e-relogio"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto - Blog UsinaInfo<\/title>\n<meta name=\"description\" content=\"Desenvolva um Rel\u00f3gio com Arduino Utilizando RTC DS1307 para Contar o Tempo e Apresentar Informa\u00e7\u00f5es no Display 16x2. Confira o Projeto no Blog UsinaInfo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto - Blog UsinaInfo\" \/>\n<meta property=\"og:description\" content=\"Desenvolva um Rel\u00f3gio com Arduino Utilizando RTC DS1307 para Contar o Tempo e Apresentar Informa\u00e7\u00f5es no Display 16x2. Confira o Projeto no Blog UsinaInfo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Usinainfo\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/pt-br.facebook.com\/faceusinainfo\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-19T20:06:21+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-07T18:55:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1032\" \/>\n\t<meta property=\"og:image:height\" content=\"774\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Diego Moreira\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Diego Moreira\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 minutos\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto - Blog UsinaInfo","description":"Desenvolva um Rel\u00f3gio com Arduino Utilizando RTC DS1307 para Contar o Tempo e Apresentar Informa\u00e7\u00f5es no Display 16x2. Confira o Projeto no Blog UsinaInfo.","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:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/","og_locale":"pt_BR","og_type":"article","og_title":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto - Blog UsinaInfo","og_description":"Desenvolva um Rel\u00f3gio com Arduino Utilizando RTC DS1307 para Contar o Tempo e Apresentar Informa\u00e7\u00f5es no Display 16x2. Confira o Projeto no Blog UsinaInfo.","og_url":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/","og_site_name":"Blog Usinainfo","article_publisher":"https:\/\/pt-br.facebook.com\/faceusinainfo\/","article_published_time":"2019-07-19T20:06:21+00:00","article_modified_time":"2019-08-07T18:55:05+00:00","og_image":[{"width":1032,"height":774,"url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg","type":"image\/jpeg"}],"author":"Diego Moreira","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Diego Moreira","Est. tempo de leitura":"18 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#article","isPartOf":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/"},"author":{"name":"Diego Moreira","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/6a2c71301c6713469112b908c657d563"},"headline":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto","datePublished":"2019-07-19T20:06:21+00:00","dateModified":"2019-08-07T18:55:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/"},"wordCount":2450,"commentCount":5,"image":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#primaryimage"},"thumbnailUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg","keywords":["como construir um rel\u00f3gio com arduino","como construir um rel\u00f3gio com rtc ds1307","como criar um rel\u00f3gio digital com arduino","como fazer uma aplica\u00e7\u00e3o com o rtc e arduino","como programar o rtc com arduino","projeto com arduino e rel\u00f3gio"],"articleSection":["Arduino","Projetos"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/","url":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/","name":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto - Blog UsinaInfo","isPartOf":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#primaryimage"},"image":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#primaryimage"},"thumbnailUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg","datePublished":"2019-07-19T20:06:21+00:00","dateModified":"2019-08-07T18:55:05+00:00","author":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/6a2c71301c6713469112b908c657d563"},"description":"Desenvolva um Rel\u00f3gio com Arduino Utilizando RTC DS1307 para Contar o Tempo e Apresentar Informa\u00e7\u00f5es no Display 16x2. Confira o Projeto no Blog UsinaInfo.","breadcrumb":{"@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#primaryimage","url":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg","contentUrl":"https:\/\/www.usinainfo.com.br\/blog\/wp-content\/uploads\/2019\/06\/horasusina.jpeg","width":1032,"height":774},{"@type":"BreadcrumbList","@id":"https:\/\/www.usinainfo.com.br\/blog\/relogio-arduino-construa-o-seu-projeto\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.usinainfo.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Rel\u00f3gio Arduino: Construa o Seu\u00a0Projeto"}]},{"@type":"WebSite","@id":"https:\/\/www.usinainfo.com.br\/blog\/#website","url":"https:\/\/www.usinainfo.com.br\/blog\/","name":"Blog Usinainfo","description":"Usinainfo","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.usinainfo.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/www.usinainfo.com.br\/blog\/#\/schema\/person\/6a2c71301c6713469112b908c657d563","name":"Diego Moreira","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/a4f3d375404c760b6cb56ca06b22c0bd19efe18c0741c9da6259a4e62b33bd21?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a4f3d375404c760b6cb56ca06b22c0bd19efe18c0741c9da6259a4e62b33bd21?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4f3d375404c760b6cb56ca06b22c0bd19efe18c0741c9da6259a4e62b33bd21?s=96&d=mm&r=g","caption":"Diego Moreira"},"description":"T\u00e9cnico em Automa\u00e7\u00e3o Industrial e graduando do curso de Tecnologia em Mecatr\u00f4nica Industrial pelo Instituto Federal do Cear\u00e1. E, atualmente, trabalha como desenvolvedor de projetos, sistemas inteligentes e criador de conte\u00fado por meio da empresa Sil\u00edcios Lab para o seu canal e para o blog da UsinaInfo. Nas horas livres, desenvolve alguns projetos com Microcontroladores e Arduino.","sameAs":["https:\/\/www.silicioslab.com.br\/"],"url":"https:\/\/www.usinainfo.com.br\/blog\/author\/diego-moreira\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2624","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/comments?post=2624"}],"version-history":[{"count":92,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2624\/revisions"}],"predecessor-version":[{"id":3603,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/posts\/2624\/revisions\/3603"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media\/3153"}],"wp:attachment":[{"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2624"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2624"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.usinainfo.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2624"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}