Neste artigo, exploraremos como criar diferentes tipos de relógio Arduino, utilizando o módulo RTC DS1307. Serão apresentados projetos práticos, desde os mais simples, como a exibição da hora no Monitor Serial, até implementações com displays LCD e de 7 segmentos.
O que é um RTC (Relógio em Tempo Real)?
O RTC, sigla para Real-Time Clock (Relógio em Tempo Real), é um componente eletrônico que mantém a contagem precisa do tempo, mesmo quando o sistema principal está desligado. Ele é utilizado em dispositivos que precisam registrar data e hora continuamente, como computadores, dispositivos embarcados, e até mesmo em sistemas industriais.
Um dos diferenciais do RTC é sua capacidade de operar de forma independente, graças a uma bateria de backup que o mantém funcionando mesmo na ausência de energia. Isso significa que ele pode armazenar informações como segundos, minutos, horas, dias, meses e anos, garantindo que os dados de tempo permaneçam atualizados e corretos.
No contexto do Arduino, o RTC é usado para criar projetos que exigem uma base de tempo precisa e estável. Por exemplo:
- Relógios digitais.
- Dataloggers, que registram eventos com marcação de tempo.
- Sistemas de agendamento, como timers automáticos para dispositivos.
Um dos módulos RTC mais populares é o DS1307, que oferece uma solução econômica e confiável para projetos de hobby e aplicações mais simples. Ele utiliza uma comunicação I2C para se conectar ao microcontrolador, tornando sua integração com o Arduino rápida e eficiente.
Como funciona o módulo RTC DS1307?
O módulo RTC DS1307 é um dos componentes mais populares para quem deseja integrar funções de relógio em projetos com Arduino.
Ele opera como um relógio em tempo real, rastreando informações de data e hora de forma precisa:
- Registro de data e hora: Ele armazena informações completas de tempo, incluindo segundos, minutos, horas, dia da semana, data, mês e ano, com suporte a anos bissextos até 2100.
- Bateria de backup: O DS1307 possui um compartimento para uma bateria (geralmente CR2032) que mantém o relógio Arduino funcionando mesmo na ausência de energia. Isso permite que ele continue contando o tempo sem interrupções.
- Interface I2C (Inter-Integrated Circuit): A comunicação entre o DS1307 e o Arduino é feita por meio do protocolo I2C, que utiliza apenas dois pinos:
- SDA (Serial Data): para transmissão de dados.
- SCL (Serial Clock): para sincronização.
- Memória RAM volátil: Além de contar o tempo, o DS1307 possui 56 bytes de memória RAM que podem ser usados para armazenar temporariamente informações do projeto. Essa memória é volátil, ou seja, perde os dados quando não há energia.
Após ser conectado a um microcontrolador, como o Arduino, e configurado, o módulo é programado com a data e hora atuais, que ficam armazenadas em seus registradores internos. A partir daí, ele mantém a contagem de tempo automaticamente, sem exigir intervenções do microcontrolador, garantindo precisão e continuidade na marcação de horas, minutos e segundos.
O Arduino pode acessar os dados do DS1307 a qualquer momento, utilizando bibliotecas como a RTClib, que facilitam a comunicação e a leitura de informações. Além disso, o relógio Arduino pode ser sincronizado com outros sistemas ou ajustado manualmente pelo código, caso seja necessário corrigir ou atualizar o horário, tornando-o uma solução flexível para diversas aplicações.
Relógio com Arduino Simples (Monitor Serial)
Primeiramente, vamos criar um relógio Arduino usando o módulo RTC DS1307 e imprimindo as informações de data e hora diretamente no Monitor Serial da IDE Arduino. Esse é o método mais básico para testar e verificar o funcionamento do RTC sem a necessidade de um display externo.
Para isso, tenha em mãos os seguintes itens:
Faça as conexões físicas do RTC ao Arduino conforme o esquema abaixo:
Importante! Certifique-se de que a bateria do RTC está instalada corretamente para que ele mantenha o tempo mesmo sem alimentação do Arduino.
Em seguida, na Arduino IDE, vá em Ferramentas > Gerenciador de Bibliotecas. Pesquise por RTClib e instale a biblioteca desenvolvida por Adafruit. Essa biblioteca é essencial para simplificar a comunicação entre o Arduino e o DS1307.
Depois, copie e cole o seguinte código na IDE Arduino:
#include <Wire.h> #include <RTClib.h> RTC_DS1307 rtc; void setup() { Serial.begin(9600); Wire.begin(); if (!rtc.begin()) { Serial.println("Não foi possível encontrar o módulo RTC!"); while (1); } if (!rtc.isrunning()) { Serial.println("RTC não está funcionando! Configurando a hora..."); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Ajusta o horário para o do computador } } void loop() { DateTime now = rtc.now(); // Imprime a data no formato DD/MM/AAAA Serial.print(now.day(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.year(), DEC); Serial.print(" "); // Imprime a hora no formato HH:MM:SS Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); delay(1000); // Atualiza a cada 1 segundo }
Clique em Carregar para enviar o código para o Arduino. Abra o Monitor Serial na IDE Arduino (Ferramentas > Monitor Serial). Certifique-se de que a velocidade do Monitor Serial está configurada para 9600 baud.
Você verá a data e hora sendo atualizadas a cada segundo no monitor.
Relógio com Arduino e Display LCD 16×2
Nesta segunda opções de projeto, vamos criar um relógio digital com Arduino, o módulo RTC DS1307 e um display LCD 16×2. O LCD exibirá a data e a hora, atualizando as informações em tempo real.
Para este projeto você vai precisar dos seguintes materiais:
Faça as conexões físicas do RTC e do display LCD ao Arduino conforme o esquema abaixo:
Importante! Caso o display não tenha módulo I2C, será necessário conectar os pinos RS, EN, D4, D5, D6 e D7 manualmente e usar a biblioteca LiquidCrystal.
Na IDE Arduino, instale as seguintes bibliotecas:
- RTClib (para comunicação com o DS1307).
- LiquidCrystal_I2C (para facilitar o uso do LCD com módulo I2C).
Abaixo está o código para exibir a data e hora no LCD:
#include <Wire.h> #include <RTClib.h> #include <LiquidCrystal_I2C.h> RTC_DS1307 rtc; LiquidCrystal_I2C lcd(0x27, 16, 2); // Endereço I2C do LCD (geralmente 0x27 ou 0x3F) void setup() { Wire.begin(); lcd.init(); lcd.backlight(); if (!rtc.begin()) { lcd.print("RTC nao encontrado!"); while (1); } if (!rtc.isrunning()) { lcd.print("Ajustando RTC..."); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Ajusta o horário para o do computador } } void loop() { DateTime now = rtc.now(); // Exibe a data no LCD: DD/MM/AAAA lcd.setCursor(3, 0); // Linha 0, posição 3 lcd.print(now.day(), DEC); lcd.print('/'); lcd.print(now.month(), DEC); lcd.print('/'); lcd.print(now.year(), DEC); // Exibe a hora no LCD: HH:MM:SS lcd.setCursor(5, 1); // Linha 1, posição 5 lcd.print(now.hour(), DEC); lcd.print(':'); lcd.print(now.minute(), DEC); lcd.print(':'); lcd.print(now.second(), DEC); delay(1000); // Atualiza a cada 1 segundo }
Carregue o código no Arduino. Quando o código for carregado, o LCD exibirá a data na linha superior e a hora na linha inferior.
Você também pode montar um relógio Arduino utilizando outros tipos de display LCD, como por exemplo o Display LCD 20×4. Veja o vídeo abaixo:
Relógio com Arduino e Display 7 Segmentos
Nesta terceira opção de projeto, vamos montar um relógio Arduino usando o módulo RTC DS1307 e um display de 7 segmentos. Esse tipo de display é ótimo para criar relógios simples e compactos.
Neste projeto você vai precisar ter em mãos os seguintes itens:
- Arduino
- Módulo RTC DS1307
- Display 7 Segmentos 4 dígitos
- Resistor 1kΩ (8 unidades)
- Jumpers
- Protoboard
Faça as conexões físicas do RTC e do display 7 segmentos ao Arduino conforme o esquema abaixo:
Na IDE Arduino, instale a seguintes biblioteca:
- RTClib (para comunicação com o DS1307).
- SevSeg (disponível para download neste link).
Primeiro, carregue o seguinte código para o Arduino, para ajustar o hora do relógio Arduino:
#include <Wire.h> #include <RTClib.h> RTC_DS1307 rtc; void setup() { Serial.begin(9600); Wire.begin(); if (!rtc.begin()) { Serial.println("Não foi possível encontrar o módulo RTC!"); while (1); } if (!rtc.isrunning()) { Serial.println("RTC não está funcionando! Configurando a hora..."); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Ajusta o horário para o do computador } } void loop() { DateTime now = rtc.now(); // Imprime a data no formato DD/MM/AAAA Serial.print(now.day(), DEC); Serial.print('/'); Serial.print(now.month(), DEC); Serial.print('/'); Serial.print(now.year(), DEC); Serial.print(" "); // Imprime a hora no formato HH:MM:SS Serial.print(now.hour(), DEC); Serial.print(':'); Serial.print(now.minute(), DEC); Serial.print(':'); Serial.print(now.second(), DEC); Serial.println(); delay(1000); // Atualiza a cada 1 segundo }
Depois, carregue o código abaixo que exibe a hora configurada acima no display de 7 segmentos:
#include "Wire.h" #include "SevSeg.h" #define DS1307_ADDRESS 0x68 SevSeg display7seg; int valor = 0; byte zero = 0x00; unsigned long timer; void setup() { Wire.begin(); //Selecao tipo de display anodo comum int displayType = COMMON_ANODE; //Definicao dos pinos dos digitos int digit1 = 10; //Pino Digito1 do display int digit2 = 11; //Pino Digito2 do display int digit3 = 12; //Pino Digito3 do display int digit4 = 13; //Pino Digito4 do display //Pinos ligados aos segmentos A - H int segA = 2; //Pino segmento A int segB = 3; //Pino segmento B int segC = 4; //Pino segmento C int segD = 5; //Pino segmento D int segE = 6; //Pino segmento E int segF = 7; //Pino segmento F int segG = 8; //Pino segmento G int segDP= 9; //Pino segmento H //Define o numero de digitos do display int numberOfDigits = 4; //Inicializa o display display7seg.Begin(displayType, numberOfDigits, digit1, digit2, digit3, digit4, segA, segB, segC, segD, segE, segF, segG, segDP); //Nivel de brilho do display display7seg.SetBrightness(50); timer = millis(); } void loop() { char tempString[10]; //Used for sprintf Wire.beginTransmission(DS1307_ADDRESS); Wire.write(zero); Wire.endTransmission(); Wire.requestFrom(DS1307_ADDRESS, 7); int segundos = ConverteparaDecimal(Wire.read()); int minutos = ConverteparaDecimal(Wire.read()); int horas = ConverteparaDecimal(Wire.read() & 0b111111); sprintf(tempString, "%02d%02d", horas, minutos); display7seg.DisplayString(tempString, 2); } byte ConverteParaBCD(byte val) { //Converte o número de decimal para BCD return ( (val/10*16) + (val%10) ); } byte ConverteparaDecimal(byte val) { //Converte de BCD para decimal return ( (val/16*10) + (val%16) ); }
O display 7 segmentos mostrará a hora no formato HH:MM, atualizando automaticamente a cada segundo. O brilho do display pode ser ajustado no código, e o tempo será mantido mesmo se o Arduino for desligado, graças à bateria do módulo RTC.
Se você tiver dúvidas, sugestões ou experiências para compartilhar, fique a vontade para deixar um comentário abaixo. E para não perder nenhum conteúdo como este, não deixe de nos seguir no Instagram.
eu baixei a biblioteca e o código, mas quando eu vou verificar aparece esse problema:
Arduino: 1.8.15 (Windows Store 1.8.49.0) (Windows 10), Placa:”Arduino Uno”
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp: In member function ‘void Adafruit_CircuitPlayground::playTone(uint16_t, uint16_t, bool)’:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:238:3: error: ‘PLLFRQ’ was not declared in this scope
PLLFRQ = (PLLFRQ & 0xCF) | 0x30; // Route PLL to async clk
^~~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:238:3: note: suggested alternative: ‘PCIFR’
PLLFRQ = (PLLFRQ & 0xCF) | 0x30; // Route PLL to async clk
^~~~~~
PCIFR
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:3: error: ‘TCCR4A’ was not declared in this scope
TCCR4A = _BV(COM4A0) | _BV(PWM4A); // Clear on match, PWMA on
^~~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:3: note: suggested alternative: ‘TCCR0A’
TCCR4A = _BV(COM4A0) | _BV(PWM4A); // Clear on match, PWMA on
^~~~~~
TCCR0A
In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.49.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0,
from c:\program files\windowsapps\arduinollc.arduinoide_1.8.49.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\pgmspace.h:90,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:28,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground/utility/Adafruit_CPlay_LIS3DH.h:30,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground/Adafruit_Circuit_Playground.h:21,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:30:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:16: error: ‘COM4A0’ was not declared in this scope
TCCR4A = _BV(COM4A0) | _BV(PWM4A); // Clear on match, PWMA on
^
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:16: note: suggested alternative: ‘COM0A0’
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:30: error: ‘PWM4A’ was not declared in this scope
TCCR4A = _BV(COM4A0) | _BV(PWM4A); // Clear on match, PWMA on
^
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:239:30: note: suggested alternative: ‘PWM’
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:240:3: error: ‘TCCR4B’ was not declared in this scope
TCCR4B = _BV(PWM4X) | scalebits; // PWM invert
^~~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:240:3: note: suggested alternative: ‘TCCR0B’
TCCR4B = _BV(PWM4X) | scalebits; // PWM invert
^~~~~~
TCCR0B
In file included from c:\program files\windowsapps\arduinollc.arduinoide_1.8.49.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\io.h:99:0,
from c:\program files\windowsapps\arduinollc.arduinoide_1.8.49.0_x86__mdqgnx93n4wtt\hardware\tools\avr\avr\include\avr\pgmspace.h:90,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\hardware\arduino\avr\cores\arduino/Arduino.h:28,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground/utility/Adafruit_CPlay_LIS3DH.h:30,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground/Adafruit_Circuit_Playground.h:21,
from C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:30:
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:240:16: error: ‘PWM4X’ was not declared in this scope
TCCR4B = _BV(PWM4X) | scalebits; // PWM invert
^
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:240:16: note: suggested alternative: ‘PWM’
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:241:3: error: ‘TCCR4D’ was not declared in this scope
TCCR4D = 0; // Fast PWM mode
^~~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:241:3: note: suggested alternative: ‘TCCR0A’
TCCR4D = 0; // Fast PWM mode
^~~~~~
TCCR0A
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:242:3: error: ‘TCCR4E’ was not declared in this scope
TCCR4E = 0; // Not enhanced mode
^~~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:242:3: note: suggested alternative: ‘TCCR0A’
TCCR4E = 0; // Not enhanced mode
^~~~~~
TCCR0A
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:243:3: error: ‘DT4’ was not declared in this scope
DT4 = 0; // No dead time
^~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:243:3: note: suggested alternative: ‘DD4’
DT4 = 0; // No dead time
^~~
DD4
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:249:3: error: ‘TC4H’ was not declared in this scope
TC4H = hi1;
^~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:249:3: note: suggested alternative: ‘PC4’
TC4H = hi1;
^~~~
PC4
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:250:3: error: ‘OCR4C’ was not declared in this scope
OCR4C = lo1; // TOP
^~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:250:3: note: suggested alternative: ‘OCR2A’
OCR4C = lo1; // TOP
^~~~~
OCR2A
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:252:3: error: ‘OCR4A’ was not declared in this scope
OCR4A = lo2; // 50% duty
^~~~~
C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.49.0_x86__mdqgnx93n4wtt\libraries\Adafruit_Circuit_Playground\Adafruit_CircuitPlayground.cpp:252:3: note: suggested alternative: ‘OCR2A’
OCR4A = lo2; // 50% duty
^~~~~
OCR2A
exit status 1
Erro compilando para a placa Arduino Uno
Este relatório teria mais informações com
“Mostrar a saida detalhada durante a compilação”
opção pode ser ativada em “Arquivo -> Preferências”
alguém poderia me ajudar?
Olá André,
Qual o código você está utilizando, é o do post?
Testei aqui o código do post com a IDE 1.8.15, porém baixada do site da Arduino, não pela microsoft store, e também no windows 10.
Compilou sem erros.
Também achei estranho ele estar acusando erro na biblioteca Adafruit_CircuitPlayground, que não é utilizada no código.
Abraços!
Vinícius – Equipe MakerHero
existe formas de eu usar esse shield para desligar lampadas todos os dias apos as 18:00 e ligar somente apos as 07:00 e sabado e domingo permanecer desligado?
Olá Jairo,
Sim, é possível fazer essa lógica, sem problemas.
Temos este post aqui: https://www.makerhero.com/blog/controle-modulo-rele-arduino/
que mostra o acionamento de lâmpadas com relé, você vai precisar de um módulo assim pois o Arduino não é capaz de lidar com a rede elétrica diretamente.
Você usaria a data e hora para comandar o acionamento/desligamento dos relés.
Abraços!
Vinícius – Equipe MakerHero
Boa noite, poderias me ajudar, sou novo na programação, preciso registrar a data e hora em um arquivo quando um relé é acionado através do arduino e o mesmo vai ligar um motor, tenho que montar uma planilha com essas informações, para saber por quanto tempo o motor fica ligado e desligado no mês. Podes por gentileza me ajudar. Obr. Abr.
Olá, por que na linha 22 e 23 você define o SQW como saída se ele não está ligado a nenhum pino de acordo com o desenho? Isso pode causar alguma incompatibilidade ao longo do tempo com o RTC e o arduino? Tipo o DS1307 parar de enviar a hora e data ou simplesmente travar? Obrigado
INVERTE A4 COM A5
Muito bom exemplo. ALias um dos poucos onde os pinos de ligação ao arduino podem ser reconfigurados, saindo do padrão A4, A5. Agora vou tentar no NodeMCU. depois reporto
caro colega como incluir outro modulo clock no diretorio ! o modelo PCF8563 ????
Olá, Nei,
Você pode dar uma olhada nesse link, tem algumas informações:
https://arduinolearning.com/code/arduino-pcf8563-rtc-example.php
Abraços!
Diogo – Equipe MakerHero
Bom dia, estou trabalhando com um projeto de sino automatico usando o módulo RTC DS1307, ele está com um problema…
Tem momento que ele avança um segundo e durante o dia torna-se em torno de 15 segundo no dia.. Sendo assim durante um mês ele adianta minutos… O que devo fazer? Já troquei o módulo e não resolve?
Olá, Thiago
Experimente buscar soluções pelo código para ver como ajeitar esse comportamento. Abra um tópico lá no nosso fórum para o pessoal te dar uma mão qualquer coisa 😉
Abraços!
Diogo – Equipe MakerHero
Mas porque acontece isso, tenho que resolver esse erro….
Boa noite! Comprei alguns componentes do site, entre eles um data logger shield e um sensor de luminosidade bh1750fvi. Estou com um problema pois o programa não funciona. Acredito que possa ser por causa do uso da interface i2c que ambos possuem. Você consegue me dar uma solução?
Muito obrigado.
Olá, Jonatam!
Aconselho você a levar seu questionamento para o nosso fórum, lá a galera pode te dar uma força!
Abraços!
Diogo – Equipe MakerHero
da pra eu programar um horario pra ligar e desligar uma lampada por exemplo
Olá Vinícius,
É possível fazer isso sim.
Abraço!
Rosana – Equipe MakerHero
como eu faria esse código?
Olá,
Você precisa comparar o horário atual com o horário que deseja ligar e desligar a lâmpada e enviar um sinal para o relé.
Abraço!
Rosana – Equipe MakerHero
n consegui
já fui no fórum e me mandaram de volta para cá, como eu faria o codigo de comparação?
Olá, é possível com esse módulo marcar assim:
dias : horas : minutos : segundos
Para poser marcar quanto tempinho Arduino está ligado.
Olá Márcio,
É possível sim 😀
Abraço!
Rosana – Equipe MakerHero
Gostaria de saber se tem como exibir em um Display Nokia 5110 o tempo desde que eu liguei o Arduino.
No meu projeto eu vou manter um Arduino Uno ligado por um mês direto e junto com ele um sensor e um display Nokia 5110.
E gostaria de exibir no display quanto tempo faz que o Arduino está ligado.
Exemplo: dias:horas: minutos : segundos :
Mais ou menos isso.
Imagino que teria Que usar um módulo RTC de tempo.
Olá Marcio,
Para usar o display Nokia 5110 dê uma olhadinha nesse tutorial: https://www.makerhero.com/blog/medidor-de-corrente-sct013-com-arduino/
Para saber o tempo que seu Arduino está ligado será necessário um RTC. Você irá precisa armazenar de alguma forma o valor o primeiro valor de tempo. Depois precisa comparar esse valor com o valor de tempo atual.
Abraço!
Rosana – Equipe MakerHero
Boa tarde pessoal. Pergunta: porque cargas d´água vem junto a EEPROM 24C32 neste módulo???
Olá Xavier,
A EEPROM pode ser usad como RAM extendida do microcontrolador.
Abraço!
Rosana – Equipe MakerHero
Boa tarde;
Bom tutorial.
Com esta “Library” (Biblioteca) também é possível definir a Data e Hora no Momento em que o Projecto é Adicionado ao Arduino?
Não estou a conseguir definir.
Apenas uma observação para quem é novo: Caso tenham Valores Random; desliguem o Pin de 5v deixem apenas o de 3.3v (e o Ground).
Olá Ricardo!
É sim!
Nesta seção do código é feito esse ajuste:
//As linhas abaixo setam a data e hora do modulo
//e podem ser comentada apos a primeira utilizacao
rtc.setDOW(FRIDAY); //Define o dia da semana
rtc.setTime(20, 37, 0); //Define o horario
rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
Abraços!
André – Equipe MakerHero
quero comparar a hora para fazer um if. exemplo if ‘hora’ = 20 { …..
Olá Ronaldo!
Você terá que trabalhar com comparação de strings. Sugiro usar a função equals(). https://www.arduino.cc/reference/en/language/variables/data-types/string/functions/equals/
Depois deixa seu código aqui pro pessoal ver como faz 🙂
Abraços!
André – Equipe MakerHero
Boa noite.
Queria saber se existe um comando que me retorna a data em segundos desde o início do relógio (no caso 01/01/1970).
Preciso de um contador referencial que esteja ligado ao calendário do relógio.
Abraço.
Descobri um jeito.
Recomendo utilizar a biblioteca RTClib.h (https://github.com/adafruit/RTClib) por ser bem mais completa.
Segue link da explicação completa em inglês (https://learn.adafruit.com/ds1307-real-time-clock-breakout-board-kit/overview)
Olá Daniel!
Bom que você resolveu!
Abraços!
André – Equipe MakerHero
Verifiquei as soldas dos pinos e estavam com mal contato pra mim resolveu vlw. MakerHero
Muito bom!!!!
Como sincronizar com o relogio do pc?
Olá Wagner!
Você poderia ajustar a hora a partir de algum local na internet sempre que ligasse. Ele por si só não tem condições de saber que horas são.
Abraços!
André Rocha – Equipe MakerHero
Bom dia
Tenho uma duvida: se eu tirar a alimentação do Arduíno quando ele estiver marcando 10:00 e retornar a alimentar 5 minutos depois, 10:05, no monitor serial ele deve marcar 10:00 ou 10:05?
Sempre que eu retiro a alimentação eu volta da data e hora que eu ajustei na programação. E ele esta com bateria nova, tudo ok. O comportamento dele é assim mesmo?
obrigado
Olá Ramon!
Quando você tira a bateria e liga de novo o Arduino, no seu programa está para ajustar a hora. Então cada vez que você dá reset, ele reajusta a hora.
Você pode colocar para ajustar apenas se receber um comando ou alguém apertar um botão, aí não vai reajustar cada vez que ligar.
Abraços!
André – Equipe MakerHero
ola vcs podiam fazer um tutorial com o ds 1302 pelo fato de ser bem mais barato e tbm ter as mesmas finalidades de data e hora. obrigado
Olá Davidson!
Vou deixar essa sugestão aqui pro pessoal.
André – Equipe MakerHero
ds1307 rtc( a4 ,a5) ;
o que seria isso ?
Olá Henrique!
Liga o Modulo RTC DS1307 às portas A4 e A5 do Arduino.
Abraços!
André – Equipe MakerHero
Adicionem a seguinte linha no setup()
rtc.begin();
desta forma da certo mas tentei usar com display lcd e acredito que a biblioteca dele da conflito com a do relogio pois aparece umas informaçoes que nao tem nada a ver
Preciso ligar um solenóide a cada hora durante 10 segundos
Usei If == 0 minutos, para ligar de hora em hora e delay(10000)
Só que aparece um loop e o solenóide liga várias vezes até o minuto se igualar a 1
Preciso acionar o solenóide uma única vez
Como faço? Desde já obrigado.
Como faço pra inserir um lcd com i2c, nesse esquema acima?
Boa noite! Estou com um projetinho aqui, que é o seguinte, por exemplo: Ás 8h da manhã, eu quero que uma placa que é sustentada por um servo, esteja na posição 20 graus, as 9h na posição 30 graus, tudo isso usando o RTC, como posso fazer??? Obrigado!
boas 5 estrelas ajudou muito,
tinha só uma pergunta se me poderes aturar.
como ligo um led aos 4 segundos e desligo ao 39?
Olá Adilson e Arduineiros!
Tenho um código para um relógio e, no cabeçalho, entre outros, tem o #include mas, na compilação é mostrado esse erro: ‘class DS3231’ has no member named ‘getTime’; Estou usando a versão do Arduino 1.6.9 e já testei várias bibliotecas DS3231 mas, sempre mostrando o mesmo erro, portanto, gostaria de uma ajuda, por favor; Obrigado
Filipe, estou tendo problema na biblioteca que você carregou. O soft não reconheceu na hora de carregar.
òtimo site.
Gostaria de saber se é possível fazer um registrador (de tempo e data) sem a necessidade de um módulo, visto que,o Arduino ira ficar conectado(pelo USB) direto no PC ?
E tenho uma chave analógica que varia de 0 a 1023 bytes, e preciso registrar o tempo e a data quando ela atingir 700 bytes. Seria possível?
Olá meu nome é Felipe, eu sou cliente da MakerHero e gostaria de saber se alguem pode me ajudar. Eu já tinha utilizado o DS1307 e percebi que ele atrasa cerca de 2 segundos por dia ( o que é muito para o que eu quero fazer ) então comprei o DS3231 com a esperança de que ele fosse mais preciso, no entanto , ele teve o mesmo comportamento, gostaria de saber se vocês podem me dar alguma ajuda com relação a esse problema de atraso.
Desde já obrigado pela atenção.
Jovem, sugiro você adquirir algum módulo Ethernet ou equivalente ou usar ESP no lugar do arduino e utilizar e fazer uma rotina de consulta a um servidor NTP.
Pessoal, realizei um datalogger com ethernet shiled + rtc ds1307 e esse site me ajudou muito na parte de configurar o rtc. Tive alguns problemas que já foram citados por outros: Atraso no horário depois de alguns dias e algumas vezes registrava uma data e hora louca que não correspondia a realidade. Com relação ao atraso, acredito que é limitação do RTC mesmo, pois teve pessoas aqui que tentaram de diversas formas e não conseguiram solucionar de forma simples. Agora com relação a ele registrar data e horários sem sentido, eu conseguir resolver simplesmente trocando a bateria. Estava usando uma de marca sem procedência (PKCELL), e depois que troquei por uma Maxell, meu projeto parou de dar esse problema. Fica a dica, abraços!
Bom dia felipe ! Baseado na sua informação é possivel entender que o problema pode não ser nos módulos RTC visto que ocorre o mesmo problema em ambos. Na hipótese de nao ser encontrado uma solução o que poderia ser feito é inicialmente descobrir quantos segundos ‘exatamente’ ele atrasa por dia e criar uma rotina no codigo que de tempo em tempo ele ajuste a hora em milésimos de segundos tantas vezes quanto forem necessárias para suprir os 2 segundos diários, por exemplo: Se fossem exatamente 2 segundos por dia, a cada 24 horas ele ajustaria em 2 segundos a hora atual OU a cada 12 horas ele ajustaria a data em 1 segundo OU a cada 6 horas ele ajustaria a data em meio segundo…….
Saudações!
Estou usando o módulo RTS1307 sem a bateria (em teste) num modulo Ethernet Shield W5100 acoplado no Arduino Uno, e quando uso o exemplo, o tempo fica assim:
Hora : 20:37:00 Data : 06.06.14 Friday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Hora : 00:00:00 Data : 01.01.00 Monday
Estou utilizando 5 Volts como mostrado no esquema!
O que será que está errado?
Será que é porque estou usando o modulo Ethernet W5100?
Me socorra por favor !!! rs
Abs,
Claudio Camara
O meu aconteceu isso com o Mega, era a pinagem errada..
Acho que vc já deve ter resolvido.
Tive o mesmo problema.
Usa sem bateria , faz um teste ai vc garante que o seu modulo 1307 está funcionando.
E depois compra uma bateria melhor.
Abraço
Olá Cláudio, tive praticamente vários problemas como os aqui citados e resolvi quando liguei a 3,3V na alimentação ao invés do 5V, ok? Espero que ajude. Att. Sandro
Gostaria de controlar uma gpio por exemplo:
se a hora >= 6:00;
ligar gipio 7;
como posso fazer isso ?
Olá!
Notei que para printar o horário (hora, minutos e segundos) basta o “Serial.print(rtc.getTimeStr());”. Estou trabalhando em um projeto e preciso posicionar um servo em função da hora. Minutos e segundos não seriam interessantes para mim. Tem como eu ler e printar apenas a hora? Ou pelo menos ignorar essas informações?
Obrigado!
Time t=rtc.getTime();
int hora = (int)t.hour;
(n tenho ctz e-e , mas é algo desse tipo)
colocou o resistor em que parte amigo?
Na porta SCL
como faço para usar o rtc q é 5v e o bmp 180 q é 3,3v juntos?
Qual é o conjunto que você está usando ?
Boa tarde,
Consegui fazer o RTC funcionar perfeitamente, a única questão é que depois do dia da semana está exibindo uma sugeira, dois caracteres do LCD ficam com pontos indefinidos, alguém teve esse problema?
Bom dia!
Estou com uma dúvida amigo.
Além do módulo eu tenho que utilizar um resistor?vi que você já conseguiu e gostaria que me ajudasse nessa questão.
Vou deixar meu zap ok?
Grato!
93 981162453
Faz o seguinte em coloca um temporizador usando a função millis().
Esse temporizador executa uma unica vez a função lcd.clear();
Mas se preferir vc tambem pode fazer assim:
Antes de escrever no lcd limpe a linha usando espaço em branco assim.
lcd.setCursor(0,0);
lcd.print(” “); // 16 espaços em branco
lcd.setCursor(0,0);
lcd.print(” Seu texto “);
Na descrição desse módulo, diz que a bateria de lítio garante que os dados sejam preservados mesmo sem alimentação externa. Queria saber se ele continua contando o tempo, mesmo sem alimentação ou se apenas grava a última informação.
Tenho ele no meu programa, mas quando eu tiro a alimentação ele não conta o tempo em que ficou desligado, voltando para o mesmo horário do último processamento (não o horário ajustado). Queria saber se é um problema de configuração, problema no meu módulo, ou se é uma característica mesmo.
Boa tarde Cristiano,
Pode ser apenas um problema de bateria. Verifique a carga, por favor.
Abraço!
Adilson – Equipe MakerHero
Olá Cristiano. Estava com um problema semelhante, bastava desligar e religar a placa, que retornava o último horário do setup feito, ou então, bastava que eu aplicasse o reset do Arduíno que retornava o horário anterior.
O que acontecia, no meu caso :
A linha que fazia o setup da hora, depois de utilizada, eu a comentei com duas barras no scketch, entretanto ela ainda estava na memória não volátil do Arduíno, desta forma percebi que era necessário fazer o upload para o Arduino, do scketch com a linha comentada, e assim ele não mais a realizaria.
Desta forma, no meu caso. o que acontecia era simples: Toda vez que eu desligava e religava o Arduino, ele corretamente realizava a rotina de inicialização do bootloader, e lá ainda estava a linha de set-up do relógio.
Feito isto o relógio ficou funcionando normalmente, sem atrasos, ou qualquer outro contratempo.
Estou muito satisfeito com o produto.
Espero que esta mensagem possa ajudar alguns, que sem querer fizeram o mesmo procedimento.
Abraço a todos.
olá, gostaria de saber como fizeste para que o RTC não viesse a ser ”descalibrado” em relação ao horário, mesmo que desligado
Olá! Alguém sabe dizer como solucionar o problema do DS1307 adiantando, o meu ta cerca de 20 segundos por dia
Isso é muito provável devido ao cristal utilizado de 32kHz. Deverá utilizar o recomendado pelo fabricante o DS32kHZ .
Olá, tenho um arduino ligado a um RTC e ao um relé, gostaria de fazer que uma lampada fica-se ligada das 06:0 as 18:00, e desligada das 18:01 as 05:59 como faria isso ?
Como você está fazendo?
Põe suas dúvidas aqui para vermos o que está fazendo de errado.
😉
Bom dia, estou com problemas na hora de compilar o módulo, da a seguinte mensagem de erro
Arduino: 1.6.9 (Windows 7), Placa:”Arduino/Genuino Uno”
In file included from C:UsersuserDocumentsMestradoProjetoArduinoSketchbookPrincipal_Abas3Principal_Abas3.ino:53:0:
C:Program Files (x86)ArduinolibrariesDS1307-master/DS1307.h:54:1: error: expected initializer before ‘class’
class Time
^
C:Program Files (x86)ArduinolibrariesDS1307-master/DS1307.h:80:2: error: ‘Time’ does not name a type
Time getTime();
^
exit status 1
Erro compilando para a placa Arduino/Genuino Uno
Pelo que olhei no código dessa biblioteca, isso tudo é dentro dela e não sei o que fazer.
Alguem pode me ajudar.
Para hora eu utilizo os comandos abaixo:
#include DS3231.h
#include Wire.h
DS3231 Clock;
Porém eu sou obrigado a utilizar as portas A4 e A5 conectadas no SDA e SCL.
Como faço para mudar isso e utilizar as portas A1 e A2 para conectar no SDA e SCL?
Não fiz nenhum teste ainda a esse respeito.
Uma das coisas que andei lendo sobre i2c é que ele chama um endereço e somente o componente com aquele endereço que responde. Assim vc pode colocar componentes i2c na mesma porta que a comunicação nao vai ser afetada ( a menos que eles tenham o mesmo endereço ).
Para hora eu utilizo os comandos abaixo:
#include
#include
DS3231 Clock;
Porém eu sou obrigado a utilizar as portas A4 e A5 conectadas no SDA e SCL.
Como faço para mudar isso e utilizar as portas A1 e A2 para conectar no SDA e SCL?
Bom, acredito que vai depender da biblioteca que você está utilizando. Se você utilizar a mesma biblioteca deste tutorial, você poderá escolher as portas no comando abaixo:
//Carrega a biblioteca do RTC DS1307
#include
//Modulo RTC DS1307 ligado as portas A4 e A5 do Arduino
DS1307 rtc(A4, A5); //aqui você colocaria A1,A2
Gabrielle, em primeiro lugar obrigado pela resposta.
Acontece que eu já utilizo outra rotina e ficaria difícil para eu mudar tudo.
Eu utilizo os comandos abaixo e não vi nenhum lugar onde eu possa mudar de A4 e A5 para A2 e A3
#include DS3231.h
#include Wire.h
DS3231 Clock;
Neste caso, se você está utilizando o Arduino Uno seriam estas portas mesmo então, A4 e A5. No Arduino Mega seriam as portas 20 e 21, pois isso se baseia no protocolo 12C que é implementado pela biblioteca Wire.h.
Estou desenvolvendo um projeto que utiliza o módulo RTC e uma bússola magnética que também utiliza as portas SDA e SCL. Estou utilizando o Arduino Mega e os pinos 20 e 21 para o RTC e os dois pinos acima do 13, GND, AREF – que são dois pinos que não tem nada escrito – para a bússola.
Obrigado.
Boa tarde, por muita gentileza como eu faço pra conseguir a temperatura utilizando o mesmo módulo relógio com o DS18B20 acoplado ao mesmo, alguém poderia me ajudar, desde já agradeço.
na verdade a biblioteca está dando erro até no arduino na hora de compilar.
estou com dificuldades em compilar a biblioteca DS1307.h no ATTINY13A. ALGUEM PODE ME AJUDAR?
Olá, eu consigo usar esse módulo rtc e o módulo i2c no mesmo projeto alterando as bibliotecas?
Obrigado
Boa tarde Matheus,
Talvez você não precise nem alterar as bibliotecas, já que você pode ligar os dois dispositivos I2C no mesmo barramento.
Abraço!
Adilson – Equipe MakerHero
Obrigado
boa noite Adilson
queria saber ser
vc poderia me ajudar com uma programação que tenho aqui para o meu tcc ?
obrigado pela a compreensão
Como eu faço para ajustar a data e hora atraves de botoes?
Ola Rafael, estou com a mesma duvida, voce conseguiu solução ?
Ola, Jonatan, ainda não. Eu dei uma pausa no projeto. Mas ate hj ninguém me respondeu. Caso encontre por favor compartilhe comigo.
Pois então irmão, ja fiz muita pesquisa e nada de encontrar solução. É muito ruim setar data e hora somente através do código fonte. Mas se eu desenvolver algo compartilho com você sim.
Eu tenho um código que fiz faz uns anos que faz isso. Só que utiliza outro micro (pic16f628) e utiliza outra linguagem (picbasic). Posso disponibilizar.
Eu fiz de jeito que da pra atualizar a hora pela serial sem ter que carregar novamente o codigo.
Colocar botões para atualizar a hora é mais fácil que parece mas é muito difícil de explicar aqui pelos comentários. Já pensei em fazer um video explicando e colocar no youtube.
Olá,
Em vez de usar o sensor de temperatura DS18B20 eu posso usar o lm35?
E como é código para obter a data, hora e temperatura juntas?
Obrigado por mais esse tutorial!
Seus tutoriais têm me ajudado muito no meu projeto!
Boa tarde Álvaro,
A placa já vem projetada para você usar o DS18B20. Você pode encontrar exemplos de projeto com esses componentes nesse link: https://www.openimpulse.com/blog/wp-content/uploads/wpsc/downloadables/Example-Code-for-the-DS1307_DS18B20_AT24CXX-Module.zip
Abraço!
Adilson – Equipe MakerHero
Mesmo após inverter o SCL e o SDA o meu resultado continua como abaixo. Os minutos que são crescentes e os segundos estão doidos. a data não sai de 19/01. O código está igual ao do tutorial, eu mudei apenas a pinagem para A2 e A3, mas mesmo na pinagem A4 e A5 não resolve o problema.
Hora : 24:14:51 Data : 01.19.01 1.19.01
Hora : 24:15:85 Data : 01.19.01 1.19.01
Hora : 24:16:59 Data : 01.19.01 1.19.01
Hora : 24:17:51 Data : 01.19.01 1.19.01
Hora : 24:18:51 Data : 01.19.01 1.19.01
Hora : 24:19:51 Data : 01.19.01 1.19.01
Hora : 24:20:51 Data : 01.19.01 1.19.01
Hora : 24:21:51 Data : 01.19.01 1.19.01
Hora : 24:22:85 Data : 01.19.01 1.19.01
Hora : 24:23:83 Data : 01.19.01 1.19.01
Hora : 24:24:51 Data : 01.19.01 1.19.01
Hora : 24:25:51 Data : 01.19.01 1.19.01
Hora : 24:26:85 Data : 01.19.01 1.19.01
Hora : 24:27:51 Data : 01.19.01 1.19.01
Hora : 24:28:59 Data : 01.19.01 1.19.01
Hora : 24:29:83 Data : 01.19.01 1.19.01
Hora : 24:30:51 Data : 01.19.01 1.19.01
Hora : 24:31:51 Data : 01.19.01 1.19.01
Hora : 24:32:83 Data : 01.19.01 1.19.01
Hora : 24:33:59 Data : 01.19.01 1.19.01
Bom dia Gabrielle,
Tentou colocar um resistor de 200 ohms, como o outro usuário postou aqui na área de comentários ?
Abraço.
Adilson – Equipe MakerHero
Oi Adilson,
Eu não tinha testado com o resistor não, mas mesmo com ele o resultado não está vindo com o horário certo. Agora está assim:
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Hora : 00:00:85 Data : 00.00.00 0.00.00
Obrigada pela resposta.
Boa tarde Gabrielle,
Entendi. Bom, peço que você reveja o circuito e se necessário refaça a solda dos conectores, para ter certeza que não é nenhum problema de conexão. Caso o problema persista, peço que entre em contato pelo email [email protected] para orientação sobre o procedimento de troca.
Abraço!
Adilson – Equipe MakerHero
Certo… vou tentar aqui.
Agradeço demais pelo help!
😀
Olá Gabriella,
Estou com o mesmo problema que você, já verifiquei meu circuito e está exatamente igual ao exemplo. Você conseguiu resolver esse problema?
Ola, eu gostaria de mais detalhes sobre o resistor de 200 Ohms , em qual posição/ pinos ele deve ser conectado exatamente ?
Boa, pode ser os jumpers, troque os cabos e tente novamente.
Consegui utilizar tranquilo com a serial, mas não sai quando tento printa-lo para lcd. Alguém já fez isso ?
Coloca no lcd é bem tranquilo.
vc faz assim para printar na serial:
Serial.print(“Hora : “);
Serial.print(rtc.getTimeStr());
no lcd depois de configurar ele como já é de costume vc faz assim.
lcd.setCursor(0,0);
lcd.print(“hora:”);
lcd.setCursor(0,1);
lcd.print(rtc.getTimeStr());
antes é bom testar com o seu lcd com o exemplo que do arduino. Hello Word.
Opa lembrei de bug que foi muito chato de descobrir.
acredite quem quiser, primeiro deixo claro que fiz o teste umas 5 vezes para acreditar tambem .
de uma hora para outra meu lcd deu ruim. mexi em tudo e num teste eu comentei a linha do : Serial.begin(9600); ai ele funcionou . eu retirei o comentario e bug voltou.
coloquei a declaração do lcd antes do Serial e ai deu tudo certo.
lcd.begin(16,2);
Serial.begin(9600);
eu consegui atualizar o RTC pela serial e quero mostrar depois como fiz isso. Mas tenho que bolar um exemplo pois não posso mostrar a programação original por etica .
Estou fazendo alguns projetinho muito legais para onde eu trabalho. Essa semana comprei mais 12 arduino mega aqui no MakerHero.
Deveria ser disponibilizada uma biblioteca para uso da EEProm da plaquinha, tive que peregrinar um pouco até encontrar uma simples de usar.
Tem como eu utilizar o Arduíno uno com RTC e o mega para executar esse sketch?
Como eu declaro o pino no Mega?
Usei o código fornecido aqui na página e não importa que data ou horário eu setar ele sempre me escreve:
Hora : 27:85:85 Data : 85.85.2165 5.85.2165
Hora : 27:85:85 Data : 85.85.2165 5.85.2165
Hora : 27:85:85 Data : 85.85.2165 5.85.2165
Onde o “5.85.2165” estranhamente é o que a função “rtc.getDOWStr()” retorna.
Também não há evolução no tempo, ele fica parado nessa dara maluca do futuro para sempre.
O que pode estar acontecendo?
Lucas,
Estou com o mesmo problema, você conseguiu solucioná-lo?
Provavelmente você trocou os pinos de SDA e SCL
Experimente inverter. Eu tive esse problema e resolvi verificando a pinagem
Sim, este problema acontece quando se inverte o SDA pelo SCL.
Você pode só inverter as porta no próprio código, na linha 8.
No meu caso foi falta de energia. O ground não estava passando corrente
Uma forma legal de acertar o relógio é usando a Serial.
Na aplicação que eu uso o RTC eu criei um programa que que puxa os dados do arduino pela serial e grava em Excel. Nesse programa eu mandei uma String para o arduino com a hora atual do sistema, depois tratei a informação preenchendo os campos de arrumar data hora , minuto , segundo , dia , mes , ano e dia da semana.
Resumindo agora quando acontece algum problema e tenho que atualizar a hora, tipo agora a pouco na virada do horario de verão, tudo que tive que fazer foi conectar na serial e apertar um botão para atualizar.
Você pode mostrar o codigo que faz essa atualização via serial?
Vou ver se eu gero um programa depois para disponibilizar. Eu com muito trabalho para fazer agora.
Olá. Estou com uma dúvida em relação à bateria do ds1307. Ela serve APENAS para manter os dados caso o arduino ao qual o RTC está conectado seja desligado? Ou o RTC não deveria continuar contando o tempo mesmo com o arduino desligado? O que eu percebi foi que ao desligar o arduino, a contagem do tempo pára, continuando no mesmo horário (e não na hora atual) ao realimentar o arduino. Está certo isso? Ou é defeito do RTC?
Obrigado
Bom dia Leandro,
A bateria serve para manter a contagem do tempo mesmo sem alimentação do módulo. Pelo que você descreve, pode ser algum defeito no RTC, mas verifique também o programa, talvez ele esteja redefinindo a hora à cada inicialização do Arduino.
Abraço.
Adilson – Equipe MakerHero
Olá. Não é problema no código. E eu me expressei mal na mensagem anterior. Ao realimentar o circuito, o RTC não continua a contagem do tempo em um valor fixo. Ele continua a partir da hora em que o circuito foi desligado. Por exemplo: se eu desligar o circuito às 9h17 e religar 23 minutos depois, ele continua a contagem do tempo em 9h17 (e não 9h40).
Tenho tido o mesmo problema. Como solucionou?
Olá Henrique!
Pelo que você descreve, pode ser algum defeito no RTC, mas verifique também o programa, talvez ele esteja redefinindo a hora à cada inicialização do Arduino.
Abraços!
André – Equipe MakerHero
Tenho me deparado com um erro. O rtc volta sozinho para a 12:35.
Alguem ja passou por isso?
Você tem que upar o código uma vez com as linhas de código que setam a hora do rtc, depois upar de novo o código sem essas linhas. Se não upar a segunda vez, sem essas linhas, toda vez que o arduino reiniciar ele vai rodas essas linhas (e não vai ter IDE para passar a hora correta).
Isso eu ja faço. E por esse motivo que eu consigo sincronizar bem o rtc com o relogio, eu mando a programação com 1 minuto adiantado e quando o tempo sincronizar com o meu relogio ai eu reseto a placa do arduino e jogo a programação com as linhas comentadas. Fiz isso em 14 projetos sem problemas e em dois projetos depois de uns 2 minutos a hora volta pra 12:35. Vale lembrar que a hora colocada na programação é quase sempre depois das 15 horas.
Porque na hora de copilar dá esse erro?
Modulo_RTC_e_LCD.ino: In function ‘void SelecionaDataeHora()’:
Modulo_RTC_e_LCD.ino:38:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:42:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:43:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:44:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:45:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:46:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:47:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:48:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:49:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino: In function ‘void Mostrarelogio()’:
Modulo_RTC_e_LCD.ino:64:8: error: ‘class TwoWire’ has no member named ‘write’
Modulo_RTC_e_LCD.ino:67:43: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:68:42: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:69:40: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:70:46: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:71:43: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:72:38: error: ‘class TwoWire’ has no member named ‘read’
Modulo_RTC_e_LCD.ino:73:38: error: ‘class TwoWire’ has no member named ‘read’
Confira se sua biblioteca está no lugar certo.
Confira a declaração da biblioteca
Confira todas aberturas e fechamentos de ” { ” .
Confira se não esqueceu de nenhum ” ; ” ou de abertura ou fechamento de “(” .
Se tudo isso estiver feito certo então é conflito na sua lógica.
Boa tarde! Estou iniciando no Arduino… Alguém pode me ajudar com uma dúvida? Consigo criar a lógica dividida em camadas? Para usar um interlock por exemplo, o Void Loop só executa enquanto as condições forem respeitadas e se as mesmas forem desrespeitadas o loop para.
O loop não para. Vc pode é colocar o seu código uma condição , se respeitada a condição entra no If e se não respeitada nada vai acontecer.
tipo:
void loop(){
if(condição){
}
}
O Void Loop nunca pára, cara. No máximo, o que pode acontecer é ele entrar num loop infinito, dentro de uma função, e não sair mais dali de dentro. O Arduino sempre vai rodar o Void Loop do início ao fim, repetida e infinitamente. Apenas o Void Setup que é rodado apenas 1 única vez, ao ligar o Arduino. Quanto às camadas, você pode fazer, sim, através de If’s, por exemplo.
Ola pessoal!
alguém poderia me ajudar?
preciso de um programa para acionar um rele com hora programada utilizando o RTC DS1307.
se alguém puder me ajudar ficarei muito agradecido.
Boa noite!
Considerando que o DS1307 não possui a função alarme, você poderá resolver de uma das tres formas:
1- armazenar o horário inicio e horário fim na EEPROM do atmega328
2- idem mas na memória do próprio DS1307 que embora volátil não se perderá enquanto a bateria estivel operacional obs: o rtc tem 58 bytes RAM
3- idem mas armazenado na memória serial ao lado do rtc on board no modulo.
Bom… provavelmente vc vai usar Arduino + RTC + módulo de relê.
Não precisa usar EEPROM. É só colocar uma condição que, quando o Arduino ler aquela hora e minuto do RTC, ele vai acionar uma porta digital (que controla o relê). Por ex.:
void loop() {
If ((now.hour() == 13) && (now.minute() == 30))
{
digitalWrite(11, LOW);
}
} // Se agora for 13h30min a porta 11 (conectada ao controlador do relê) irá ficar como LOW.
No caso de um código meu, eu uso “agora” no lugar desse “now” aí, mas não faz diferença.
Dá uma pesquisada no Google que tem mta coisa na net.
Bom site. Grato.
Valeu Ramon. Abraço!
Adilson – Equipe MakerHero
Primeiro estou muito satisfeito com o Site.
Comprei para a empresa em que trabalho uns 30 rtc com vcs. Estou começando os testes agora, ja tive alguns erros citados anteriormente nesse poste, tipo Hora : 00:00:85 Data : 00.00.00 0.00.00 , tudo zerado e tudo desconfigurado.
Amanha vou fazer o teste do resistor de 200 e verificar todas as baterias, uma outra coisa que fiquei atento é que vc usou a versão 1.0.5 do arduino e estou usando a versão 1.6.6 ( que é otima ) , porem os exemplos do biblioteca do rtc dão erro, ele acusa erro na :
rtc.begin();
Queria saber se tem alguma atualização que vc conhece da biblioteca ou se esses erros dos exemplos tambem acontecem na sua versão.
Obrigado.
Está funcionando normalmente, medi todas as baterias e deixei carregando duas que vieram descarregadas.
O resistor de 200 faz muita diferença.
E em 8 RTC vieram com a bateria CR2032.
Obrigado.
Olá José, seus testes com o resistor de ohm deram certo?
Alguns tiveram problemas. principalmente o defeito de 27 h 87 m.
Ai coloquei um trimpot no lugar do resistor. Eu vi que ao subir o trimpot da o erro de 27h e descendo esse erro some.
O meu também estava com problema de 27h, quando coloquei o resistor na linha de saída SCL do RTC começou a fornecer resultados corretos, usei um resistor de 270 Ohms.
acertei o relogio com outro relogio mas com o tempo o modulo atrasa com o decorrer do tempo, o que seria, o modulo ou a programação, já peguei varios codigos diferentes todos tem o mesmo atraso, alguem tem alguma sugestão.
Eu comprei mas ainda não chegou para ter uma ideia completa.
Da uma olhada no seu codigo e tenta diminuir o tempo do delay. Pode ser que simplesmente seu codigo está parado contando o delay enquanto a informação do RTC já não foi lida.
sidnei o resistor é colocado no pino vcc/5volts?
Este CI DS1307 é muito vulnerável e critico quanto ao plano de terra, principalmente na região do cristal 23.768Khz, Vide datasheet, portanto como poderá ver debaixo do cristal há um pad para solda deste, acredito que se o aterrar (soldar o cristal neste pad melhorará a base de tempo.
Não tem solução existente na face dessa terra que resolva isso. Todo santo dia o DS1307 perde alguns segundos, o que vai, logicamente, se acumulando com o decorrer do tempo. Depois de 1 mês vc vai ter alguns minutos de atraso. Só que se esse fosse o único problema desse RTC, tava perfeito. Se você procurar outros comentários meus anteriores aqui na página, vai saber do que tou falando. Abs.
porque quando eu copio e colo a programação na IDE do meu arduino da sempre erro de compilação?
Quase sempre é alguma informação que ficou sem vir junto do lugar que vc fez a copia.
Tipo uma } ou um ;.
Mas sempre confira se a placa do arduino que vc esta usando é a mesma que esta marcada na IDE.
Olá, meu módulo está com defeito
verifiquei o código, as ligações e com esse código ele só retorna
Hora : 00:00:85 Data : 00.00.00 0.00.00
Está com defeito mesmo? MakerHero
Bom dia Thiago,
Por favor reveja as conexões, especialmente a solda dos pinos de conexão ao Arduino. Se o problema permanecer, entre em contato pelo email [email protected].
Abraço
Adilson – Equipe MakerHero
É possível utilizar o RTC DS1307 + um display OLED nos mesmos pinos? fazendo cascateamento… Se for possível teria como montar um tutorial a respeito?
bom dia, eu posso controlar um led, módulo relé, lâmpada com ele? por exemplo: acender Led, das 18:00 até 06:00?
NO FIO DO SINAL O MESMO QUE COLOCA O RESISTOR PEGA UM FERRITE EM FORMA DE SOLENOIDE E PASSA UMAS 03 VEZES É SÓ ISSO SE NÃO ENTER ME AVISA QUE EU MANDO UMA FOTO
BOA NOITE A TODOS É SÓ COLOCAR UM NUCLEO DE FERRITE QUE SOME O PROBLEMA JÁ ESCREVI ISSO VARIAS VEZES
Boa noite, Luiz.
Desculpe a ignorância, mas como colocamos esse núcleo de ferrite? Se puder passar algum link ou alguma coisa que explique com mais detalhes, ficaremos muito gratos. Abs.
ATUALIZAÇÃO sobre meu comentário anterior:
Pessoal, já faz uns 2 meses que coloquei o resistor de 200R (entre o pino SLC do RTC e o SCL do Arduino) e, de lá pra cá, não tive mais problema. Ainda estou observando para ver quanto tempo o RTC fica sem falhar. Rezando a Deus pra esse upgrade ter sido uma solução definitiva, pra eu não precisar mais me preocupar com esse bendito… no dia que voltar a dar problema (espero que nunca) comento aqui de novo pra avisar quanto tempo durou… Obrigado pelo suporte, FelipeFlop e comunidade. Abraços.
Tirando a dúvida de quem perguntou sobre qual solução eu tomava antes: eu sempre trocava a bateria (uma vez ou outra trocava o rtc inteiro), upava o código com a linha pra pegar a hora novamente e depois upava o código sem essa linha. Quando ele dava problema com a hora de novo, repetia o procedimento, sempre fazendo o teste primeiro só com a bateria nova. Se não desse certo, trocava o rtc.
Qual a tensão da fonte de alimentação que c tá usando, Marcel?
9V.
E como você chegou aos 200 ohms, ou foi por testes mesmo? Se puder me adicionar no face pra gente conversar por lá, pode. https://www.facebook.com/iohanacabral
Usei o resistor de 200R por sugestão do Filipe Flop e de outras pessoas que comentaram isso aqui.
É, pessoal… a solução do resistor de 200R só segurou por 2 meses. O horário ficou doido de novo hoje…
Dor de cabeça sem fim esse DS1307… Desapontado demais com esse RTC… =/
tente colocar resistor pull up de 10k em SCL e SDA
Boa tarde!
Não consigo ajustador a hora no monitor serial com o RTC alguém pode me ajudar por favor?
Obrigado
Olá!
Esse tutorial pode ser usado para o timer 3231?
Obrigada!
COLOQUE UM FERRITE CIRCULAR NO FIO QUE RECEBE OS DADOS ISSO VAI MESMO É RUIDO
Boa noite.
queria saber como eu faço para acender uma lampada as 8 da manha e apaga-la as 18 usando essa programação. pois não estou conseguindo identificar uma forma de definir a hr para que poça acontecer.
Fica-me sempre na sexta feira, como posso mudar isto?
sendo que n codigo se mudar da erro
Oi, tenho um projeto com RTC. Quando alimento o sistema com o notebook ele funciona perfeitamente, entretanto, ao ligar a uma bateria de 12 v que contém um divisor de tensão ele reinicia. Alguém já teve esse problema e sabe me dizer por que isso acontece?
Bom dia,
De quantos ampéres é essa bateria ?
Abraço.
Adilson – Equipe MakerHero
De 1,4 A. Pq? Qual a infuência?
Bom dia,
Pelo que você descreveu, o motivo do Arduino reiniciar podia ser tensão/corrente insuficiente, mas parece que não é o caso. Você outra bateria do mesmo tipo para testar ? consegue medir quando de tensão ela está fornecendo realmente ?
Abraço.
Adilson – Equipe MakerHero
Boa Tarde!
estou com uma duvida, o rtc tem um pino de bateria, e a bateria que vem com ele ( vendido por esse site) é a recarregável, tem alguma ligação que possa ser feita para recarregar ele?
Seguinte posso estar enganado mas, comprei quatro módulos desse do mesmo site chines, acho que via ebay, quando fui usa-las pela primeira vez, essa semana constatei que 3 baterias estavam zeradas < 0.2v, e uma estava a 3.32 que é considerada full para baterias de lítio (3v com carga), tive problemas com o modulo e endereço o que me obrigou a me aprofundar e descobri que as outras três baterias são de Íons de Litio (3,6V) sendo as mesmas de 35 mAh, e que são recarregadas por módulos como o Tiny so em estar alimentado o circuito principal, entretanto acredito que na falta de uma bateria LI(R)2032 (acredito ser LitIon Recarregável ) de Lion se preferirem, me mandaram uma CR2032 n recarregável, e que por sorte constatei tanto pelo nome como a tenção que eh de 3,0v, ou seja provavelmente alguém deva estar tendo problemas nesses módulos colocando baterias não recarregáveis, enquanto o modulo mesmo suportando 1 ano, sempre mantem elas carregadas, pois a tecnologia permite isso da química delas, carregar sem efeito memória, mas em resumo, posso estar enganado mas n usem baterias CR2032 nem similares sem ser de Íons de Lítio onde essas são carregadas pelos módulos sem problemas, o VBAT, serve para vc medir a tenção dessas baterias enquanto as usam, posso estar enganado mas acho que passa por um transistor ou diodo pois ela de 3.0v cai pra 2.33v (queda de tensão similar desses componentes ) na saída do pino, ou algum divisor de tensão a constatar, fato eh que , com a de lition sai os 3v necessários para um modulo GPS e seu relógio interno o que simplesmente ligo nele para obter recuperação do sinal de satélite mais rápida. Posso ter falado algo errado ou incompleto por gentileza alguém poderia me corrigir sendo o caso? Resumindo se n mudar o esquema de um Tiny RTC por exemplo o modulo vai tentar carregar a bateria seja ela CD ou LIR, no caso da CR ja sabemos onde isso vai dr ja que se trata de uma química não recarregável.
Estou com o mesmo problema do Gabriel, só fica no erro Hora : 27:01:51 Data : 85.85.xxx, ja fiz tudo que foi falado aqui e nao deu certo, o que pode ser?
Boa tarde Andre,
Pode ser algum erro no módulo mesmo. Se você fez todos os testes e não resolveu, entre em contato pelo email [email protected].
Abraço
Adilson – Equipe MakerHero
Obrigado pelo retorno Adilson, eu usei a biblioteca RTClib e funcionou.
Ola
Estou com dificuldades para compilar o sketch do RTC DS1307
esta apresentando o seguinte erro:
RTC.ino:5:20: fatal error: DS1307.h: No such file or directory
compilation terminated.
Erro compilando.
Gostaria de alguma ajuda se possível
Obrigado!
.
Bom dia Rodrigo,
Isso parece ser algum erro na instalação da biblioteca. Você pode verificar essa parte, por favor ?
Abraço
Adilson – Equipe MakerHero
MakerHero,
Obrigado pela ajuda!
Mais você poderia me mandar essa biblioteca?
Bom dia Rodrigo,
Você pode fazer o download da biblioteca nesse link: https://github.com/MakerHero/DS1307
Abraço!
Adilson – Equipe MakerHero
Rapaz, mais de 9 meses com um projeto funcionando 24h no ar, 7 dias por semana, e não teve jeito, já troquei o RTC dele diversas vezes. Sem mal contato na caixa, sem soldas frias, upando a linha de código pra pegar a hora só 1 vez e depois upando sem a linha, tendo trocado o RTC por outros novos várias vezes, colocando baterias novas várias vezes… Depois de 1 ou 2 meses o RTC acaba perdendo a hora e começa a mostrar 00:00:00 00/00/000 ou então o famoso 85:28:85 etc (mas geralmente é com os valores zerados). Aí preciso ir até meu cliente, refazer tudo de novo e esperar bugar outra vez. E o circuito fica 24h sendo alimentado pela fonte de alimentação, exceto algumas poucas horas (ou minutos) quando falta energia, ou seja, é raro usar a bateria do RTC.
E a única coisa que me aperreia é esse DANADO desse RTC. Nada mais me dá dor de cabeça no projeto, exceto isso. Já tou estressado! E isso pq eu nem me importo com a questão de que ele vai atrasando/adiantando alguns minutos com o tempo… kkkkkkk. E o pior de tudo é não encontrar um outro que seja melhor (ou menos ruim… kkkkkk).
Bom dia,
Você já tentou colocar um resistor de 200 ohms (creio que um valor próximo a esse também funcione) entre o RTC e o pino A5 ?
Abraço
Adilson – Equipe MakerHero
Marcel, eu também estou com o mesmo problema, você conseguiu resolver?
Ainda não deu pra fazer o teste com o resistor de 200 ohms (por isso ainda não tinha respondido), mas assim que testar digo aqui se funcionou ou não. Abraços.
Marcel, Que solução c tomou?
Lê meu novo comentário.
Pessoal, já faz uns 2 meses que coloquei o resistor de 200R e, de lá pra cá, não tive mais problema. Ainda estou observando para ver quanto tempo o RTC fica sem falhar. Rezando a Deus pra esse upgrade ter sido uma solução definitiva, pra eu não precisar mais me preocupar com esse bendito RTC… no dia que voltar a dar problema (espero que nunca) comento aqui de novo pra avisar quanto tempo durou… Obrigado pelo suporte, FelipeFlop e comunidade. Abraços.
Tirando a dúvida de quem perguntou sobre qual solução eu tomava antes: eu sempre trocava a bateria (uma vez ou outra trocava o rtc inteiro), upava o código com a linha pra pegar a hora novamente e depois upava o código sem essa linha.
So n esquece de ver se estais usando baterias n recarregáveis como as de PC CR2032, no lugar da LIR2032 que o modulo tenta carregar as duas mas so a segunda é recarregável, o que pod ser motivo da falha de seus módulos… So uma sugestão… comprei 4 módulos 3 vieram com LIR e so uma com CR, pesquisando descobri algo do tipo que comentei …vlw.
Meu RTC não Aparece nada legível, no monitor serial aparece símbolos:
QSþ©QSþ©QSþ©QRþ©QSþ©QSþ©QRþ©QSþ©QSþ©QSþ©QSþ©QSþ©A¦ü©QSþ©QSþ©QSþ©QRþ©QSþ©QSþ©QSþ©A¦ü«A¦ü©QSþ©A¦ü©QSþ
já fiz uma vez e funcionou, mas agora ta assim..oque pode ter acontecido?
O meu relógio só mostra
Hora : 27:85:85 Data : 85.85.@5 5.85.@5 e Hora : 00:00:00 Data : 00.00.00 0.00.00
o que será que está acontecendo?
Olá, Gabriel, estava com o mesmo problema.
adiciona a biblioteca
Wire.begin(); //adicione esta linha
rtc.halt(false);
pronto!
a biblioteca é ::: Wire . h (nao apareceu no comentário anterior)
Cara, não funcionou!
Bom dia, estou em um projeto em que tenho que calcular a temperatura média do mês e enviar para um aplicativo via bluetooth, como posso fazer para contar 1 mês com o RTC, e no final enviar a media? Alguem pode me responder, pf.
caro amigo, você pode , montar uma função no arduino que ira receber os dados do seu RTC e ira fazer a media, porem voce tera o inconveniente de deixar seu arduino ligado por um mes, pois o RTC não execulta nenhum calculo alem das horas.
Eu posso fazer uma comparação com o RTC? EXEMPLO:
Se 15:20 min então
{
Comando
}
….
Posso fazer isso?
Eduardo, você pode usar um ethernet shield, e enviar esses dados para um servidor MySQL (por exemplo) em tempo real. Com todos os dados, você pode manipular, criar relatórios e suas médias mensais.
Bom dia Eduardo!
Eu tive a mesma necessidade e soldei um sensor de temperature DS18B20 na placa do modulo Real Time RTC DS1307 e modifiquei o programa para ler a temperature. Funciona satisfatoriamente.
Filipe como faço para ativar o sensor de temperatura desse modulo no código?
Boa noite Leonardo,
Você precisa soldar um DS18B20 no conector da placa, e depois ler as informações de temperatura por meio do pino DS.
Abraço.
Adilson – Equipe MakerHero
Bom dia Eduardo!
Eu adicionei as seguintes linhas ao programa:
#include
// On pin 13, a 4.7K resistor
OneWire ds(13);
void setup(){
Serial.begin(9600);
}
void loop(){
//Variáveis da Temperatura
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
if (OneWire::crc8(addr, 7) != addr[7]){
Serial.println(“CRC is not valid!”);
return;
}
Serial.println();
// the first ROM byte indicates which chip
switch (addr[0]){
case 0x10:
Serial.println(” Chip = DS18S20″); // or old DS1820
type_s = 1;
break;
case 0x28:
Serial.println(” Chip = DS18B20″);
type_s = 0;
break;
case 0x22:
Serial.println(” Chip = DS1822″);
type_s = 0;
break;
default:
Serial.println(“Device is not a DS18x20 family device.”);
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44); // start conversion, use ds.write(0x44,1) with parasite power on at the end
delay(1000); // maybe 750ms is enough, maybe not
// we might do a ds.depower() here, but the reset will take care of it.
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // Read Scratchpad
Serial.print(” Data = “);
Serial.print(present, HEX);
Serial.print(” “);
for ( i = 0; i < 9; i++){ // we need 9 bytes
data[i] = ds.read();
Serial.print(data[i], HEX);
Serial.print(" ");
}
Serial.print(" CRC=");
Serial.print(OneWire::crc8(data, 8), HEX);
Serial.println();
// Convert the data to actual temperature
// because the result is a 16 bit signed integer, it should
// be stored to an "int16_t" type, which is always 16 bits
// even when compiled on a 32 bit processor.
int16_t raw = (data[1] << 8) | data[0];
if (type_s){
raw = raw << 3; // 9 bit resolution default
if (data[7] == 0x10) {
// "count remain" gives full 12 bit resolution
raw = (raw & 0xFFF0) + 12 – data[6];
}
}
else{
byte cfg = (data[4] & 0x60);
// at lower res, the low bits are undefined, so let's zero them
if (cfg == 0x00) raw = raw & ~7; // 9 bit resolution, 93.75 ms
else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
//// default is 12 bit resolution, 750 ms conversion time
}
//Cálculo da Temperatura
celsius = (float)raw / 16.0;
Serial.print(" Temp = ");
Serial.println(celsius);
lcd.setCursor(8,0);
lcd.print(" ");
lcd.print(celsius);
lcd.print("C");
}
Obrigado, estas informações são realmente úteis.
Valeu Eduardo !
Abraço.
Adilson – Equipe MakerHero
Boa noite, gostaria de saber se posso adaptar para cronometrar por exemplo uma largada e chegada de algo ?
Bom Dia !
Gostaria de saber como deixo os dias da semana em portugues no display, pois no meu aparece os dias em inglês e não estou conseguindo mudar, estou usando a biblioteca DS1307.h.
Você tem que mudar a librarie inteira dele.. Procure por exemplo “Friday” em “DS1307.h” , “DS1307.cpp” e “keywords” .. e mude todos para “Sexta”, e faça isso com os outros dias da semana..
Ou simplesmente mude os termos entre “aspas” no DS1307.cpp :
switch (t.dow)
{
case MONDAY:
output=”Monday”;
break;
case TUESDAY:
output=”Tuesday”;
break;
case WEDNESDAY:
output=”Wednesday”;
break;
case THURSDAY:
output=”Thursday”;
break;
case FRIDAY:
output=”Friday”;
break;
case SATURDAY:
output=”Saturday”;
break;
case SUNDAY:
output=”Sunday”;
break;
}
boa noite, quando desligo o arduino deixando só o modulo 1307 ligado com a bateria, as vezes quando ligo no dia seguinte ele esta desregulada a hora,porque
Olá Sidnei, também encontramos o mesmo problema , no caso tenta medir a tensão da sua bateria , se não tiver 3.6V , precisa trocar.
como fazer um despertador usando esse mesmo modulo RTC?
Boa tarde Felipe,
Você pode incluir um condicional (IF) dentro do programa para comparar a hora atual com uma hora pré-determinada. Ficaria mais ou menos assim :
If (hora = hora_despertador)
{
//Comando para acender luz, tocar sirene, etc
}
Abraço.
Adilson – Equipe MakerHero
vc poderia me dar um exemplo melhor sobre isso? preciso ativar um equipamento a partir de uma hr pre determinada e ainda n consegui :/
Pessoal , dê uma checada na pilha do módulo , pois a minha veio com carga bastante baixa com 0.5V, por isso não consegue manter o horário correto .
é verdade, o meu tambem veio com a bateria descarregada. o melhor exemplo que funcionou perfeitamente foi o desse link. http://www.instructables.com/id/Arduino-Aquaponics-Real-Time-Clock-Part-I/step2/Arduino-Library-and-Sketch/
É possível adaptar essa placa com RTC em um Microcontrolador 8051?
Bom dia Sérgio,
É possível sim, creio que nesse link tem tudo o que você precisa :
http://www.engineersgarage.com/contribution/real-time-clock-using-8051-microcontroller-rtc-ds1307
Abraço.
Adilson – Equipe MakerHero
Olá, seria muito complicado usar esse código p/ um DS1302?
Tenho um funduino mega2560 mas todos os codigos que copiei e colei da internet nao funcionam pois não estão pegando a hora no rtc.
Alguém pode me ajudar?
Grato
Att
Carlos
Olá, estou utilizando o modulo RTC em um arduino com função de logger, porém o código que uso não está setando a hora e a data correta. Sabe me informar o que preciso fazer?
Aguardo, obrigada.
Boa noite Janaina,
Qual erro que está apresentando ?
Grato.
Adilson – Equipe MakerHero
Boa tarde. Estou desenvolvendo um projeto, e gostaria de saber se tem como eu usar os dados de segundo, dia e ano separados.
Exemplo: usar os segundos para tirar média de vazão de um sensor.
Alguém poderia me ajudar ?
Boa noite Raphael,
Você pode retirar uma parte da string e utilizar apenas a parte que você precisa, ou seja, os segundos. Creio que esse link pode te ajudar :
http://arduino.cc/en/Tutorial/StringRemove
Abraço !
Adilson – Equipe MakerHero
Como o Adilson disse, use a função substring:
hora = rtc.getTimeStr();
h = hora.substring(0,2);
m = hora.substring(3,5);
s = hora.substring(6,8);
Acompanhando este tópico, tentem estas dicas:
1 – verifique a bateria, se esta ligada corretamente e se tem carga.
2 – verifique se ligou corretamente o SCL e o SDA, muita gente inverte…
3 – verifique o Baudrate no serial monitor. normalmente fica em 9600 baud
E mais importante… se a montagem é em protoboard as vezes dá mau contato nas ligações
gerando os caracteres estranhos citados…
Boa sorte ^^
Eu tive o mesmo problema que a maioria dos colegas relatou. Fiz as conexões corretas, adicionei a biblioteca DS1307.h e digitei o sketch como explicado neste site, mas não certo… No Serial Monitor informava repetidamente:
Hora : 27:85:85 Data : 85.85.@5 xxx
Depois disso atualizei a IDE do Arduino para a versão 1.0.6 e o problema continuou. Então finalmente segui o conselho do Marcel e deu certo. A solução mesmo é usar o modelo utilizado no site do “Arduino e Cia” (ver abaixo). Nesse caso, será usado a biblioteca Wire.h que o Arduino já possui.
http://www.arduinoecia.com.br/2013/04/real-time-clock-rtc-ds1307.html
Boa sorte!
O meu esta com o mesmo problema, mas acontece somente quando eu conecto o modulo diretamente na protoboard, quando eu utilizo jumpers ele funciona perfeitamente. E a protoboard esta funcionando normalmente, o que torna mais estranho ainda.
Adilson, Boa noite !
Em busca na internet sobre o problema do meu relógio que adianta aproximadamente 5 segundos por hora, encontrei outra informação que pode ser importante divulgar.
Parece que alguns relógios Tiny RTC i2c estão estourando as baterias CR2032. O motivo é que esses relógios devem usar a bateria LIR2032 (Recarregável) e não a CR2032 (Não recarregável). Para poder usar as CR2032 sem problemas deve-se retirar o diodo D1 e os resistores R4 e R6. Sendo que no lugar de R6 deve-se colocar um jamper.
Segue um dos links sobre o assunto:
http://www.ebay.com/gds/Tiny-RTC-I2C-modules-Arduino-/10000000178398866/g.html
Sds,
Ivanluiz
Boa tarde Ivan,
Ótima informação, não tivemos relatos ainda de baterias danificadas, mas serve de alerta para quem for trocar a bateria desse módulo.
Abraços !
Adilson – Equipe MakerHero
Com a CR2032 ligando ele em 3v3 tambem resolve, alimentar com 5v só se estiver com a LIR2032
O que o colega diz deve ser o que ocorre comigo também:
Hora : 27:85:85 Data : 85.85.@5 xxx
o que devo fazer?
Coloque um resiator de 200 ohm entre o RTC e o a5 e dê carga no programa de novo.
O meu esta com o mesmo problema, coloquei o resistor e não resolveu, e agora?
Desculpa! o programa deu um erro, mas agora esta funcionando!
BOM DIA!!! REALMENTE É UM PROBLEMA ESQUISITO MESMO COM O RESISTOR COMIGO TEM HORA QUE TAMBÉM NÃO FUNCIONA, MAS O QUE DEU MAIS CERTO FOI COLOCAR UM FERRITE NA FORME DE TOLENOIDE E DEI DUAS VOLTAS, COLOQUEI UM NO A4 E UM NO A5, DEVE SER ALGUM RUIDO GERADO PELO RTC. PRECISAVA TER UM OSCILOSCÓPIO PARA PODER ANALISAR MELHOR. SE VOCE QUISER UMA FOTO ME MANDA O SEU E-MAIL – OBRIGADO….
Luiz, gostaria de uma foto da sua solução com ferrite, meu e-mail: [email protected]
OLÁ, SE O AMIGO PUDER MANDAR A FOTO, AGRADEÇO.
FELIZ NATAL
Por favor, pode me mandar a foto com o ferrite?
Estou com mesmo problema de perder a hora e travamentos.
COLOCA SÓ 100 OHMS
Olá, pessoal.
Há quase um mês, brigando com RTC1307. Cheguei trocar por 4 outros e sempre dando travamentos e perdas de dados. As suspeitas caíam em:
1. ruídos de campo magnético de um trafo 127-24v Ac e 4 válvulas solenóides próximas de 3/4″ próximas dos RTCs.
2. uso de bateria comum alcalina, ao invés de LIR recarregável.
3. flutuação de estados 1 e 0 nas saídas SCL e SDA.
Meu sistema é composto por:
Arduino Genérico GeekCreit+RTC1307+relés, válvulas solenóides etc.
ÚLTIMAS CORREÇÕES FEITAS:
1. Com relação a ruído, ainda não testei na caixa plástica onde estão os campos magnéticos. Se persistirem travamentos, vou envelopar os componentes com filme plástico pra evitar curtos circuitos e, em seguida, envelopar com papel alumínio para blindagem magnética. Se não resolver, vou instalar núcleo de ferrite nos cabos SCL e SDA.
2. Instalei bateria LIR2032 (sozinha não resolveu o problema)
3. Coloquei dois resistores de 4.7k, ambos jumpeando em paralelo as saídas SCL e SDA com os 5v dc. Ou seja, no ponto de soldagem do cabo vindo do RTC SCL no pino A1, soldei a ponta do resistor de 4.7k jumpeando com os 5v. Em seguida, fiz o mesmo procedimento com o outro resistor na saída SDA com os 5v.
Sistema rodando desde ontem sem travar e sem perder a hora!
Darei mais informações depois de instalar na caixa, sobre possíveis ruídos de campos magnéticos.
Boa noite Luiz,
Por favor reveja as conexões e a solda do módulo, a maioria dos problemas com esse módulo são ocasionadas por falhas na ligação.
Grato.
Adilson – Equipe MakerHero
BOM DIA – OBRIGADO PELO CONTATO – MAS NÃO É PROBLEMA DAS CONEXÕES – COLOCANDO RESISTOR FUNCIONA, COLOCANDO UM FILTRO COM FERRITE FUNCIONA, ESTE MODULO FOI UMA DECEPÇÃO NÃO TEM PRECISÃO, MAL FUNCIONAMENTO, FOI O PIOR MODULO PARA TRABALHAR COM O ARDUINO, NÃO TEM NENHUMA APLICAÇÃO PRATICA. OBRIGADO
O problema não é o módulo, e sim o Arduíno não original, quem descobriu a do resistor fui eu, tenho arduinos originais e replicas, nos originais funciona sem precisar de resistor.
BOM DIA, NÃO IMPORTA QUEM DESCOBRIR COLOCANDO UM FERRITE TAMBÉM FUNCIONA MAS TUDO BEM E QUANTO A PRECISÃO É DA REPLICA TAMBÉM O PROBLEMA NÃO POSSO TRABALHAR COM UM RELÓGIO QUE ADIANTA OU ATRASA 2 MINUTOS POR DIA.
Amigo, estou tentando comparar a data e hora atual trazida pelo DS1307 com uma inserida manualmente pelo usuário via botôes para o acionamento de um relé para ligar uma válvula, mas não consigo fazer uma comparação, pode me ajudar?
if (rtc.getTimeStr() == 22) {
digitalWrite(rele, HIGH);
mas como é um ponteiro não tem dado certo
vc pode usar a função de comparação de strings STS
NEM VAI FUNCIONAR VOCE ESTA COMPARANDO XX:XX:XX COM 22 VEJA OS EXEMPLOS NA BIBLIOTECA DO RTC PARA ENTENDER COMPARAR SÓ COM A HORA.
Estou procurando na internet mas nao acho o script correto, tenho o o RTC 1307 e gostaria que ele acionasse dois reles, sendo o promeiro acionado todos dias as 07h e desligado as 12h e outro rele acionado as 08h e desligado as 18h, parece simples mas nao to achando assim simples, so um mais completos com Display e ajustes por teclas.. eu gostaria so do script basico.
faço! meu émail é [email protected]
Também tenho essa dúvida amigo
alguém sabe como fazer para comparar hora e minutos para fazer um alarme? fico no aguardo.
Comigo deu certo assim:
Criei uma variável
String hora;
Depois joguei nela a hora do relógio
hora = rtc.getTimeStr();
E logo sem seguita um if
if (( hora == “12:00:00” ) || ( hora == “18:00:00” )) {
Serial.println(“Alarme”);
}
No meu não viro isso não AHUAHDUAH’
Boa noite.
Se eu quiser comparar apenas os minutos e segundos, sabe como que eu posso fazer? Por exemplo quero acionar um alarme toda vez que for x horas e 30 minutos. Como eu estou fazendo um protótipo necessito fazer o acionamento em curtos intervalos de tempo para poder demostrar que funciona.
Estou tendo um problema no meu modulo, nao sei se eh problema cm o modulo ou nao programação! seguinte, ta atrasando 2 segundos, alguem saberia me dizer o por que??
Boa tarde Leonardo,
Estranho isso. Em qual período ele atrasa 2 segundos ? em um dia ? uma hora ?
Grato.
Adilson – Equipe MakerHero
Comprei um rtc liguei certinho como o exemplo e ele está adiantando 2 minutos a cada 12 horas o que pode ser?
Boa tarde Laercio,
Difícil falar sem testar o módulo, mas pode ser algum problema na placa, se não houver nenhum fator externo, como reprogramação da data e hora, por exemplo.
Por favor efetue mais alguns testes e se o problema persistir entre em contato para que o módulo seja substituído.
Grato.
Adilson – Equipe MakerHero
O meu também está assim, adiantando uns 2 minutos a cada 12 horas.
Estou com o mesmo problema, o relógio está atrasando 2 minutos a cada dia! Está tudo montado correto e até agora o problema persiste.
Boa Noite !
Comprei com vocês um RTC DS1307, mas não está contando, somente aparece as informações DOMINGO 01.01.2000 — 00:00:00 e nao conta ajustei a hora mas aparece so na primeira linha nas seguintes não aparece volta a essa informação como resolver ?
Boa tarde Thiago,
Você está excluindo as linhas que setam a data e hora ? Reveja também a solda da barra de pinos.
Grato.
Adilson – Equipe MakerHero
Boa galera descobri mais uma, tentei ligar o rtc mais uma vez em um arduino não “original” e deu esse erro chato 85.85.5@ … peguei o mesmo rtc e coloquei em um “original” e funcionou normal, dai fiquei testando e fiz uma experiência que deu certo coloquei um potenciometro entre o rtc e o A5, e com uma resistencia baixa ele funcionou blz.
Funcionou blz. Adicionei uma função para setar a hora ao apertar um botão.
Obrigado!
Boa noite Alex !
Legal. É uma bela sugestão para incrementar o programa. 🙂
Abraço !
Adilson – Equipe MakerHero
Como?
amigo toda vez que o arduino for reiniciado a hora sera setada novamente???? ou seja sempre vaiser a hora que colocou no codigo?
vc compila e envia o código para o arduino pela primeira vez com as linhas abaixo normalmente:
rtc.setDOW(FRIDAY); //Define o dia da semana
rtc.setTime(20, 37, 0); //Define o horario
rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
uma vez feito isso, o RTC já está com a hora atualizada (lembre de deixar a hora certinha com seu relogio de pulso).
Compile e envie o código para o arduino agora com essas linhas comentadas.
/*
rtc.setDOW(FRIDAY); //Define o dia da semana
rtc.setTime(20, 37, 0); //Define o horario
rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
*/
DS1307 rtc(A4, A5);
Está dando erro nessa linha o que devo fazer ???
Boa tarde Gustavo,
Qual erro a IDE aponta ? Você instalou a biblioteca normalmente ?
Grato.
Adilson – Equipe MakerHero
O meu tb esta dando este erro…
sketch_sep26a:3: error: ‘DS1307’ does not name a type
sketch_sep26a.ino: In function ‘void setup()’:
sketch_sep26a:8: error: ‘rtc’ was not declared in this scope
sketch_sep26a:12: error: ‘FRIDAY’ was not declared in this scope
sketch_sep26a:17: error: ‘SQW_RATE_1’ was not declared in this scope
sketch_sep26a.ino: In function ‘void loop()’:
sketch_sep26a:27: error: ‘rtc’ was not declared in this scope
sketch_sep26a:30: error: ‘FORMAT_SHORT’ was not declared in this scope
Acredito que faltou vc colocar a biblioteca DS1307 na pasta libraries.
Baixe o arquivo que foi indicado no post e descompacte a pasta dentro da pasta libraries. Se estiver no windows o caminho vai ficar assim: C:UsersusuarioDocumentsArduinolibrariesDS1307. Feito isso abra novamente a IDE do arduino e tente compilar.
Olá, baixei a library sugerida no link do site http://www.henningkarlsen.com/electronics/library.php?id=34
porém os dados lidos estão completamente errados:
Hora: 27:85:85
Data: 85:85:@5 xxx
Encontrei alguma referencia na rede sobre essa hora errada, sugerindo que nao estou conseguindo ler a data do modulo. A biblioteca que baixei tem a seguinte versão:
Version:
1.0 4 Oct 2010 – initial release
1.1 26 Jan 2012 – Added support for Arduino 1.0 IDE
O que estou fazendo errado? Existe outra library que vc pode sugerir?
Grato
Boa noite,
Tente a RTCLib, nesse endereço : https://github.com/adafruit/RTClib
Grato.
Adilson – Equipe MakerHero
Também tive esse problema e consegui resolver com essa nova biblioteca que você indicou.
Muito Obrigado
Aeh galera, testei no mega a principio não funcionou, mas aeh mudei os bps da serial para 57600 eaeh
funcionou de boa!
Boa tarde Rafael,
Nos nossos testes funcionou normalmente com a velocidade de 9600, mas é um teste válido.
Abraços e obrigado.
Adilson – Equipe MakerHero
Comigo não tá lendo nada. Aparece sempre as datas e as horas zeradas
Boa tarde Ricardo,
Por favor verifique as conexões e principalmente se os pinos do módulo estão bem fixados.
Grato.
Adilson – Equipe MakerHero
tive o mesmo problema que os demais, só funciona quando tiro o negativo. Alguém já resolveu este problema.
eu estava testando com um garagino, testei com o Leonardo e deu certo.
Boa tarde,
Legal, obrigado pelo retorno.
Abraço.
Adilson – Equipe MakerHero
Sabe como setar a hora, e data?
Tipo void SetaDS(…){}
e chamar o comando para enviar os dados…estou utilizando String ou byte, não encontrei uma forma de enviar os dados…
Boa tarde Daniel,
Sim, você pode criar uma subrotina e copiar essa parte do código lá pra dentro :
//As linhas abaixo setam a data e hora do modulo
//e podem ser comentada apos a primeira utilizacao
rtc.setDOW(FRIDAY); //Define o dia da semana
rtc.setTime(20, 37, 0); //Define o horario
rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
você só terá que definir como será a entrada de dados, se usará um display, botões, teclado, etc.
Abraço.
Adilson – Equipe MakerHero
Precisa de resistor de pull-up ?
o meu RTC ta atrasando..
Boa tarde Rogério,
A princípio não é necessário, pois o módulo vem com todos os componentes integrados.
Abraço.
Adilson – Equipe MakerHero
Estou usando
rtc.poke(1, 1);
e quando eu uso rtc.peek(1) depois de desligar o arduino e ligar novamente e nao deixou salvo na memoria o valor!
oq devo fazer ?
Boa noite Rogério,
Em qual programa você está usando esse comando ?
Adilson – Equipe MakerHero
Como saber se a data ja foi configurada e não precisa configurar mais ?
Boa noite Rogério,
Você pode retirar o comando de escrita da hora e tentar efetuar uma leitura. São essas 3 linhas do programa :
rtc.setDOW(FRIDAY); //Define o dia da semana
rtc.setTime(20, 37, 0); //Define o horario
rtc.setDate(6, 6, 2014); //Define o dia, mes e ano
Adilson – Equipe MakerHero
Eu fiz um if no inicio para saber se já tem hora..
Mas acho q a lib deveria implementar uma funçao para verificar se ja tem hora salva.
vlw.
Quando eu fui fazer o uplound deu o seguinte erro:
sketch_jul26a:8: error: ‘DS1307’ does not name a type
sketch_jul26a.ino: In function ‘void setup()’:
sketch_jul26a:13: error: ‘rtc’ was not declared in this scope
sketch_jul26a:17: error: ‘FRIDAY’ was not declared in this scope
sketch_jul26a:22: error: ‘SQW_RATE_1’ was not declared in this scope
sketch_jul26a.ino: In function ‘void loop()’:
sketch_jul26a:32: error: ‘rtc’ was not declared in this scope
sketch_jul26a:35: error: ‘FORMAT_SHORT’ was not declared in this scope
O que devo fazer?
Desde ja agradeço a todos
Boa noite Mauro,
Você baixou e instalou a biblioteca ?
Adilson – Equipe MakerHero
Estou enfrentando o mesmo problema, já tentei varias bibliotecas, já troquei a bateria, já refiz os pontos de solda mas o RTC continua mostrando valores incorretos e quando ele aparenta mostrar algo coerente, pode-se ver que o tempo nao está contando, sao sempre os mesmos numeros.
Boa tarde Eduardo,
Se você já verificou as conexões e principalmente a solda, pode ser que o seu módulo esteja com defeito.
Se foi adquirido aqui na MakerHero, por favor entre em contato com o departamento de vendas.
Grato.
Adilson – Equipe MakerHero
Não seria mais proveitoso dizer:
“Baixe e instale a biblioteca!”?
Essa lib funciona para usar no Attiny85?
Teria alguma lib que funcione no Attiny85?
Boa noite Rogério,
Por favor tente este artigo, e a biblioteca TinyWireM : https://codebender.cc/example/TinyWireM/Tiny85_Temp_LCD_RTC
Grato.
Adilson – Equipe MakerHero
Kra, comigo também não funcionou, e pelo que pude perceber o problema está na library pois usando sem a library (Um código gigante que consegui na web) funciona perfeitamente.
Boa tarde Marcel,
Aqui usamos a IDE 1.5.0, e a biblioteca mencionada no post. Você está utilizando alguma outra versão ?
Grato.
Adilson – Equipe MakerHero
O que o colega diz deve ser o que ocorre comigo também:
Hora : 27:85:85 Data : 85.85.@5 xxx
Não deu certo! Na hora de mostrar a hora na janela do monitor da porta COM, mostra horário e data fora do comum.
Olá Getulio,
Você se atentou a parte do post que diz:
No programa, a parte do código que contém os comandos
rtc.setDOW(MONDAY);
rtc.setTime(16, 30, 47);
rtc.setDate(5, 6, 2014);
só deve ser utilizada para setar a hora e data do RTC DS1307. Depois disso, essas linhas podem ser comentadas ou excluídas e o programa deve ser novamente carregado no Arduino.
Se sim, me dá um toque e podemos ver melhor o teu problema.
Abraço!
Sim, fiz do jeito que está explicado. Mas tem outra coisa acontecendo. Quando fui desmontar o sistema, comecei retirando o fio que liga o Gnd do RTC ao GND do Arduino, ai a hora e data foi mostrada no displayLCD direito. Quando coloco de volta o pino ao gnd do arduino a hora fica doida novamente.
Kra o problema é a biblioteca (library) que está sendo usada nesse exemplo, já verifiquei que ela está com erro, a solução por enquanto é usar o modelo do Arduino & Cia ou corrigir a biblioteca.
Meu está assim também, alguma posição?