fala garera! Boa tarde a todos. algum de vocês poderia me dar uma ajuda? Preciso deste código modificado pra usar com o RTC SD 3231

Eu copiei o código aqui do forum mesmo, em uma postagem sobre automatização de sirene escolar do membro: Everaldo José de Souza em 12 outubro 2015 às 13:03. Estou com um projeto semelhante, porem junto ao Arduino estou utilizando um RTC diferente. Obrigado

<code>

#include <Wire.h>
#include "RTClib.h"
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
RTC_DS1307 rtc;

int hora = 0;
int minuto = 0;
int segundo = 0;
void setup () {
Wire.begin();
rtc.begin();

// set up the LCD's number of columns and rows:
lcd.begin(16, 2);

Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
pinMode(6, OUTPUT);
digitalWrite(6, LOW);
if (!rtc.isrunning()) {
lcd.print("RTC parado, vou ajustar com a hora da compilacao...");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}

void printnn(int n) {
// imprime um numero com 2 digitos
// acrescenta zero `a esquerda se necessario
String digitos = String(n);
if (digitos.length() == 1) {
digitos = "0" + digitos;
}
lcd.print(digitos);
}

void loop () {
// Obtem a data e hora correntes e armazena em tstamp
DateTime tstamp = rtc.now();
hora = (tstamp.hour());
minuto = (tstamp.minute());
segundo = (tstamp.second());
// Mostra no monitor serial a data e hora correntes
lcd.setCursor(3, 0);
printnn(tstamp.day());
lcd.print('/');
printnn(tstamp.month());
lcd.print('/');
lcd.print(tstamp.year(), DEC);
lcd.setCursor(3, 1);
lcd.print (' ');
printnn(tstamp.hour());
lcd.print(':');
printnn(tstamp.minute());
lcd.print(':');
printnn(tstamp.second());
delay(1000);
lcd.clear();
//lcd.println();
Serial.print (hora);
Serial.print (":");
Serial.print (minuto);
Serial.print (":");
Serial.println (segundo);
// Periodo da manha
if (hora == 7 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 9 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 9 && minuto == 50 && segundo == 0) {
alarme();
}
if (hora == 11 && minuto == 35 && segundo == 0) {
alarme();
}
//periodo da tarde
if (hora == 13 && minuto == 20 && segundo == 0) {
alarme();
}
if (hora == 15 && minuto == 35 && segundo == 0) {
alarme();
}
if (hora == 15 && minuto == 50 && segundo == 0) {
alarme();
}
if (hora == 17 && minuto == 20 && segundo == 0) {
alarme();
}
}
void alarme() {
digitalWrite(13, HIGH);
digitalWrite(6, HIGH);
lcd.setCursor(6, 0);
lcd.print ("CURSO");
lcd.setCursor(3, 1);
lcd.print ("PROGRAMACAO");
delay(10000);
digitalWrite(13, LOW);
digitalWrite(6, LOW);
lcd.clear();
}

</code>

Exibições: 2195

Responder esta

Respostas a este tópico

A sim... Estou montando o meu projeto sem a utilização do Led

Boa tarde Luiz, 

Você conseguiu resolver o seu problema? pois também estou na mesma situação.

Tentando motar um projeto com rele mas estou usando o rtc 3231, e não esta funcionando.

Se puder me ajudar ficarei grato.

Att.

Luciano

Oi L e LGA, boa noite.

recomendo antes de usar um programa mais complexo, o uso deste code:

http://blog.filipeflop.com/modulos/relogio-rtc-ds1307-arduino.html

Apesar da biblioteca nele ser para o DS1307 ele funciona igualmente no DS3231.

Eu usei aqui no meu DS3131 e funcionou corretamente.

Depois, sabendo que seu modulo está ok, parte para um code de maior complexidade

Rui

Boa noite Rui,

Vou testar depois posto aqui, valeu pela dica.

Luciano

Boa tarde a todos,

Rui muito obrigado pela atenção, resolvi o meu problema.

Da mesma forma que o Luiz, copiei o código do projeto do  Everaldo José de Souza em 12 outubro 2015 às 13:03, para acionamento de rele em horário pr...

Conforme comentário do Rui  comprei o DS3231, porem não modifiquei o código em relação ao rtc, compilava e gravava normalmente, mas data e horário no LCD ficava, creio eu da fabricação do RTC, 01/01/2000, e não conseguia mudar.

Ai comecei a trabalhar com várias hipóteses, baixei a biblioteca do DS3231, mas acho que não foi isso.

Enfim o que acho que deu certo foi modificar uma linha na programação.

rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));

para

rtc.adjust(DateTime(__DATE__, __TIME__));

e assim funcionou direitinho, com a hora inicial igual ao do not.

Obrigado a todos, me desculpe por alguma informação absurda, pois sou iniciante.

Abraço

 

Olá meus amigos, boa tarde. Muito obrigado pela colaboração de vocês nesse tópico. Eu tive que dar uma parada no meu projeto, pois preciso de um código que funcione. Luciano, você poderia me passar o código completo que voce utizou? Ficarei muito grato. Forte  abraço

O Luiz com certeza, nesse link ai.http://fatecjd.edu.br/site/uploads/files/Projeto-10.pdf

Estou trabalho muito no acionamento de cargas com rele, mas estou com problemas no RTC, quando aciona a carga, o display fica louco, vou testar a dica do nosso amigo   valter paladino de 04 de agosto de 2013.

Valeu, Abraço

Então meu caro, eu não estou usando display, então essa parte ai, eu não procurei saber muita coisa. O meu projeto está funcionando tudo ook, usei o código que você me passou, e está acionando o pino desejado  corretamente, porem o horário do rtc não está o mesmo do pc, usei a dica que você deixou aqui em 4 dezembro 2015 at 16:55, mas continua o mesmo horário, diferente do meu pc

Bom dia Luiz

Então fiquei na duvida se foi mesmo o linha que modifiquei, outra coisa que eu fiz foi desmontar e montar novamente os circuitos.

abraço

Bom dia Luciano. Desculpe, devido a correria do dia a dia não da pra responder com uma certa rapidez os tópicos, enfim... Eu toquei o meu projeto pra frente mesmo com o horário do rtc não estando ajustado com o do pc, na hora de configurar o código, é só colocar a diferença no tempo que ele bate certinho, porem estou precisando de um horário especial pra os sábados, e não sei por onde começar. Se alguém ai puder dar uma orientação, mais uma vez eu fico muito grato. Luciano, você já tentou montar o seu projeto sem a utilização do display? Possa ser que o problema dele ficar louco quando aciona a carga desapareça.

Bom dia Luiz,

Estava viajando, por isso não respondi, não fico online. Pois bem, percebi que funciona perfeitamente sem o display, mas é que fica bonitinho (frescura) com ele. Depois de algumas pesquisa resolvi usar optoacoplador, encareceu um pouco o projeto mais tudo bem.Quanto ao seu horário especial para o sábado já resolveu ?

Caso não, acho que nas minhas pesquisas esbarrei com uma programação onde era usado dia da semana, fuçando um pouquinho, posso tentar encontra-lá.

Abraço,

Feliz 2016 

Opa meu querido. Bom dia. Beleza, final de ano a coisa fica meio corrida mesmo. kkk É isso mesmo, não me preocupo muito com boniteza, porem para o projeto ser usado aqui na escola, vou ter que desmontar o meu Frankenstein, cheio de fios em excesso e montá-lo em uma caixinha de circuito, mais segura e tal. Eu consegui resolver o meu problema com a hora, que estava diferente do pc, utilizando esse código: rtc.adjust(DateTime(2016, 1, 5, 7, 18, 0));

Pow velho, eu ficaria muito feliz se conseguisse encontrar pra mim, um código com configuração especial para todos os dias.

Abração e excelente ano de 2016 pra você!

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço