Olá pessoal.

como deixar o relógio contando, o tempo cintinue contando mesmo ele tendo acabado a bateria?

eu to usando um  Shield Data Logger Arduino Com Rtc Ds1307 Com Entrada Sd e to indo de pouco em pouco até chegar no projeto completo que é fazer leituras nos sensores, armazenar com as leituras e com as datas e horas.

vou deixar isso em campo só irei volta a cada 7 dias pra coleta dados.

ai está o sketch:

#include "Wire.h"

#define DS1307_ADDRESS 0x68

byte zero = 0x00;

void setup()
{
Wire.begin();
Serial.begin(9600);
//A linha abaixo pode ser retirada apos setar a data e hora
SelecionaDataeHora();
}

void loop()
{
Mostrarelogio();
delay(1000);
}

void SelecionaDataeHora() //Seta a data e a hora do DS1307
{
byte segundos = 40; //Valores de 0 a 59
byte minutos = 53; //Valores de 0 a 59
byte horas = 17; //Valores de 0 a 23
byte diadasemana = 0; //Valores de 0 a 6 - 0=Domingo, 1 = Segunda, etc.
byte diadomes = 4; //Valores de 1 a 31
byte mes = 3; //Valores de 1 a 12
byte ano = 18; //Valores de 0 a 99
Wire.beginTransmission(DS1307_ADDRESS);
Wire.write(zero); //Stop no CI para que o mesmo possa receber os dados

//As linhas abaixo escrevem no CI os valores de
//data e hora que foram colocados nas variaveis acima
Wire.write(ConverteParaBCD(segundos));
Wire.write(ConverteParaBCD(minutos));
Wire.write(ConverteParaBCD(horas));
Wire.write(ConverteParaBCD(diadasemana));
Wire.write(ConverteParaBCD(diadomes));
Wire.write(ConverteParaBCD(mes));
Wire.write(ConverteParaBCD(ano));
Wire.write(zero); //Start no CI
Wire.endTransmission();
}

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) );
}

void Mostrarelogio()
{
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);
int diadasemana = ConverteparaDecimal(Wire.read());
int diadomes = ConverteparaDecimal(Wire.read());
int mes = ConverteparaDecimal(Wire.read());
int ano = ConverteparaDecimal(Wire.read());
//Mostra a data no Serial Monitor
Serial.print("Data: ");
Serial.print(diadomes);
Serial.print("/");
Serial.print(mes);
Serial.print("/");
Serial.print(ano);
Serial.print(" ");
Serial.print("Hora : ");
Serial.print(horas);
Serial.print(":");
Serial.print(minutos);
Serial.print(":");
Serial.print(segundos);
switch(diadasemana)
{
case 0:Serial.print(" Domingo");Serial.print(" ");
break;
case 1:Serial.print(" Segunda");Serial.print(" ");
break;
case 2:Serial.print(" Terca");Serial.print(" ");
break;
case 3:Serial.print(" Quarta");Serial.print(" ");
break;
case 4:Serial.print(" Quinta");Serial.print(" ");
break;
case 5:Serial.print(" Sexta");Serial.print(" ");
break;
case 6:Serial.print(" Sabado");Serial.print(" ");
}


int sensorValue1 = analogRead(A0);
int sensorValue2 = analogRead(A1);
int sensorValue3 = analogRead(A2);
int sensorValue4 = analogRead(A3);
int sensorValue5 = analogRead(A4);
int sensorValue6 = analogRead(A5);


Serial.print("Valor lido por sensor1: ");(Serial.print(sensorValue1)); Serial.print(" "); Serial.print("Valor lido por sensor2: ");(Serial.print(sensorValue2));Serial.print(" ");// mostra valores no Monitor Serial
Serial.print("Valor lido por sensor3: ");(Serial.print(sensorValue3)); Serial.print(" "); Serial.print("Valor lido por sensor4: "); Serial.print(sensorValue4);Serial.print(" ");// mostra valores no Monitor Serial
Serial.print("Valor lido por sensor5: ");(Serial.print(sensorValue5)); Serial.print(" "); Serial.print("Valor lido por sensor6: "); Serial.print(sensorValue6);Serial.print(" ");// mostra valores no Monitor Serial

int umidade1 = analogRead(A0); int umidade2 = analogRead(A1);
int umidade3 = analogRead(A2); int umidade4 = analogRead(A3);
int umidade5 = analogRead(A4); int umidade6 = analogRead(A5);

int Porcento1 = map(umidade1, 1023, 0, 0, 100); int Porcento2 = map(umidade2, 1023, 0, 0, 100);
int Porcento3 = map(umidade3, 1023, 0, 0, 100); int Porcento4 = map(umidade4, 1023, 0, 0, 100);
int Porcento5 = map(umidade5, 1023, 0, 0, 100); int Porcento6 = map(umidade6, 1023, 0, 0, 100);

Serial.print("porcentagem1: ");Serial.print(Porcento1);Serial.print("%");Serial.print(" ");Serial.print("porcentagem2: ");Serial.print(Porcento2);Serial.print("%");Serial.print(" ");
Serial.print("porcentagem3: ");Serial.print(Porcento3);Serial.print("%");Serial.print(" ");Serial.print("porcentagem4: ");Serial.print(Porcento4);Serial.print("%");Serial.print(" ");
Serial.print("porcentagem5: ");Serial.print(Porcento5);Serial.print("%");Serial.print(" ");Serial.print("porcentagem6: ");Serial.print(Porcento6);Serial.print("%");Serial.println(" ");

delay(1000);

}

Exibições: 385

Responder esta

Respostas a este tópico

Olá Isaac,

Antes que nada leia este topico http://labdegaragem.com/forum/topics/sugest-o-de-como-postar desta forma podera adaptar-se as regras que tratamos de seguir para o bem de todos.

Sobre sua pergunta, esta ambígua para mim, como faço para não parar de contar? O seu modulo para de contar as horas depois de um tempo?

Segue link do meu canal que talvez possa lhe interessar: CLIQUE AQUI

Abs.

CK

é pra que o tempo continue, pra que ele nao volte a conta na mesma data.

que ao coletar os dados, eu tenha as datas atualzadas ao longo do tempo.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço