Relógio binario com módulo RTC DE1307

//Relógio Binario 10 LEDS com Arduino e RTC DS1307
//pedroluand.com.br
//versão: 1.3 utilização do rtc ds1317
//21/11/2012
//versão: 1.2 correção do clock e botão de ajuste
//20/11/2018
//versão: 1.1 usando millis, com teste inicial
//08/11/2018
//versão: 1.0
//07/11/2018

#include "Wire.h" //biblioteca I2C
#define DS1307_ADDRESS 0x68 //endereço do ds1317
byte zero = 0x00; //ds1317

int hh; //horas
int mm; //minutos
int ss; //segundos

void setup() {
Serial.begin(9600);
Wire.begin();
pinMode(2,INPUT_PULLUP); //ajuste minutos
pinMode(3,INPUT_PULLUP); //ajuste horas
pinMode(4,OUTPUT); //hh 8
pinMode(5,OUTPUT); //hh 4
pinMode(6,OUTPUT); //hh 2
pinMode(7,OUTPUT); //hh 1
pinMode(8,OUTPUT); //mm 32
pinMode(9,OUTPUT); //mm 16
pinMode(10,OUTPUT); //mm 8
pinMode(11,OUTPUT); //mm 4
pinMode(12,OUTPUT); //mm 2
pinMode(13,OUTPUT); //mm 1
// SelecionaDataeHora(); //descomente para acertar o relógio (demora 40 segundos para carregar o programa)
}

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

//ajustes
int valor1=digitalRead(2); //adj minutos
if(valor1==LOW)
{
mm+=1;
}

int valor2=digitalRead(3); //adj horas e minutos
if(valor2==LOW)
{
hh+=1;
}
}

void SelecionaDataeHora() //Seta a data e a hora do DS1307
{
  byte segundos=0; //Valores de 0 a 59
  byte minutos=32; //Valores de 0 a 59
  byte horas=11; //Valores de 0 a 23
  byte diadasemana = 1; //Valores de 0 a 6 - 0=Domingo, 1 = Segunda, etc.
  byte diadomes = 1; //Valores de 1 a 31
  byte mes = 1; //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 ss = ConverteparaDecimal(Wire.read());
  int mm = ConverteparaDecimal(Wire.read());
  int hh = ConverteparaDecimal(Wire.read() & 0b111111);
  int diadasemana = ConverteparaDecimal(Wire.read());
  int diadomes = ConverteparaDecimal(Wire.read());
  int mes = ConverteparaDecimal(Wire.read());
  int ano = ConverteparaDecimal(Wire.read());

  Serial.print("Hora : ");
  Serial.print(hh);
  Serial.print(":");
  Serial.print(mm);
  Serial.print(":");
  Serial.println(ss);

//configuração do display de leds

if(hh==0)
{
digitalWrite(4,LOW); //8
digitalWrite(5,LOW); //4
digitalWrite(6,LOW); //2
digitalWrite(7,LOW); //1
}

if(hh==1)
{
digitalWrite(4,LOW); //8
digitalWrite(5,LOW); //4
digitalWrite(6,LOW); //2
digitalWrite(7,HIGH); //1
}

if(hh==2)
{
digitalWrite(4,LOW); //8
digitalWrite(5,LOW); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,LOW); //1
}

if(hh==3)
{
digitalWrite(4,LOW); //8
digitalWrite(5,LOW); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,HIGH); //1
}

if(hh==4)
{
digitalWrite(4,LOW); //8
digitalWrite(5,HIGH); //4
digitalWrite(6,LOW); //2
digitalWrite(7,LOW); //1
}

if(hh==5)
{
digitalWrite(4,LOW); //8
digitalWrite(5,HIGH); //4
digitalWrite(6,LOW); //2
digitalWrite(7,HIGH); //1
}

if(hh==6)
{
digitalWrite(4,LOW); //8
digitalWrite(5,HIGH); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,LOW); //1
}

if(hh==7)
{
digitalWrite(4,LOW); //8
digitalWrite(5,HIGH); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,HIGH); //1
}

if(hh==8)
{
digitalWrite(4,HIGH); //8
digitalWrite(5,LOW); //4
digitalWrite(6,LOW); //2
digitalWrite(7,LOW); //1
}

if(hh==9)
{
digitalWrite(4,HIGH); //8
digitalWrite(5,LOW); //4
digitalWrite(6,LOW); //2
digitalWrite(7,HIGH); //1
}

if(hh==10)
{
digitalWrite(4,HIGH); //8
digitalWrite(5,LOW); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,LOW); //1
}

if(hh==11)
{
digitalWrite(4,HIGH); //8
digitalWrite(5,LOW); //4
digitalWrite(6,HIGH); //2
digitalWrite(7,HIGH); //1
}

if(hh==12)
{
digitalWrite(4,HIGH); //8
digitalWrite(5,HIGH); //4
digitalWrite(6,LOW); //2
digitalWrite(7,LOW); //1
}

if(mm==0)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==1)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1

digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==4)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==5)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==6)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==7)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==8)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==9)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==10)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==11)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==12)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==13)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==14)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==15)
{
digitalWrite(8,LOW); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==16)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==17)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==18)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==19)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==20)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==21)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==22)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==23)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==24)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==25)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==26)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==27)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==28)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==29)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==30)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==31)
{
digitalWrite(8,LOW); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==32)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==33)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==34)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==35)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==36)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==37)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==38)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==39)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==40)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==41)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==42)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==43)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==44)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==45)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==46)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==47)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,LOW); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==48)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==49)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==50)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==51)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==52)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==53)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==54)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==55)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,LOW); //8
digitalWrite(11,HIGH); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}

if(mm==56)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,LOW); //1
}

if(mm==57)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,LOW); //2
digitalWrite(13,HIGH); //1
}

if(mm==58)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,LOW); //1
}

if(mm==59)
{
digitalWrite(8,HIGH); //32
digitalWrite(9,HIGH); //16
digitalWrite(10,HIGH); //8
digitalWrite(11,LOW); //4
digitalWrite(12,HIGH); //2
digitalWrite(13,HIGH); //1
}
  }

Comentários

Postagens mais visitadas deste blog

Amplificador de 6W para módulos PLL FM, usando transistores C1970 e C1971 - Versão final 04-04-2022

Amplificador de RF 350mW com BD135 para modulos pll

Antena dipolo para transmissores FM