unsigned char second; unsigned char minute; unsigned char hour; #define CLK 5 // Determina os pinos de clock e dados do modulo Display 7seg (pode ser alterado) #define DIO 4 TM1637 tm1637(CLK, DIO); // Inicializa o modulo Display 7seg void setup() { Serial.begin(9600); pinMode(2, OUTPUT); // Inicializa pino Digital 2 como saida pinMode(3, OUTPUT); // Inicializa pino Digital 3 como saida pinMode(12, OUTPUT); // Inicializa pino Digital 12 como saida digitalWrite(2, LOW); // Configura o pino 2 em 0v (necessario para alimentacao do Modulo 7seg, mas pode ser alterado) digitalWrite(3, HIGH); // Configura o pino 3 em 5v (necessario para alimentacao do Modulo 7seg, mas pode ser alterado) tm1637.set(); tm1637.init(); Timer1.initialize(500000);//timing for 500ms Timer1.attachInterrupt(TimingISR); //declare the interrupt serve routine:TimingISR // Informacoes iniciais de data e hora // Apos setar as informacoes, comente a linha abaixo // (segundos, minutos, hora, dia da semana, dia do mes, mes, ano) // myRTC.setDS1302Time(30, 11, 16, 2, 8, 6, 2015); } void loop() { myRTC.updateTime(); // Le as informacoes do CI TimeUpdate(); // Atualiza as variaveis que controlam o Display 7seg tm1637.display(TimeDisp); // Comanda o modulo 7seg para mostrar as variaveus atualizadas acima. Serial.print("Data : "); // Imprime as informacoes no serial monitor imprime_dia_da_semana(myRTC.dayofweek); // Chama a rotina que imprime o dia da semana Serial.print(", "); Serial.print(myRTC.dayofmonth); Serial.print("/"); Serial.print(myRTC.month); Serial.print("/"); Serial.print(myRTC.year); Serial.print(" "); Serial.print("Hora : "); if (myRTC.hours < 10) // Adiciona um 0 caso o valor da hora seja <10 { Serial.print("0"); } Serial.print(myRTC.hours); Serial.print(":"); // Adiciona um 0 caso o valor dos minutos seja <10 if (myRTC.minutes < 10) { Serial.print("0"); } Serial.print(myRTC.minutes); Serial.print(":"); if (myRTC.seconds < 10) // Adiciona um 0 caso o valor dos segundos seja <10 { Serial.print("0"); } Serial.println(myRTC.seconds); ClockPoint = (~ClockPoint) & 0x01; // Inverte o estado do ":" do relogio despertador(); delay( 1000); } void despertador() { if (hour==17 && minute==19) { digitalWrite(12, LOW); } else { digitalWrite(12, HIGH); } } void imprime_dia_da_semana(int dia) { switch (dia) { case 1: Serial.print("Domingo"); break; case 2: Serial.print("Segunda"); break; case 3: Serial.print("Terca"); break; case 4: Serial.print("Quarta"); break; case 5: Serial.print("Quinta"); break; case 6: Serial.print("Sexta"); break; case 7: Serial.print("Sabado"); break; } } void TimingISR() { halfsecond ++; Update = ON; if (halfsecond == 2) { second = (myRTC.seconds); // Sincroniza as variaveis dos segundos, no RTC e no 7seg minute = (myRTC.minutes); // Sincroniza as variaveis dos minutos, no RTC e no 7seg hour = (myRTC.hours); // Sincroniza as variaveis das horas, no RTC e no 7seg halfsecond = 0; } // Serial.println(second); } void TimeUpdate(void) // Rotina de comando do Display 7seg { if (ClockPoint)tm1637.point(POINT_ON); else tm1637.point(POINT_OFF); TimeDisp[0] = hour / 10; TimeDisp[1] = hour % 10; TimeDisp[2] = minute / 10; TimeDisp[3] = minute % 10; Update = OFF; } Conte-nos suas experiencias utilizando os produtos adquiridos em nossa loja!Ate o proximo artigo!