Relógio de ponto utilizando modulo rtc3231 sd card e lcd 16x2

//relogio de ponto utilizando modulo rtc3231 sd card e lcd 16x2
//versão 1.0
//18-03-2019
//pedroluand@gmail.com

#include <SD.h>
#include <SPI.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DS3231.h>      //Biblioteca para manipulação do DS3231
LiquidCrystal_I2C lcd(0x3F,2,1,0,4,5,6,7,3,POSITIVE);
File myFile; // data log
DS3231 rtc;              //Criação do objeto do tipo DS3231
RTCDateTime dataehora;   //Criação do objeto do tipo RTCDateTime

   void setup()
   {
   lcd.begin(16,2);
   rtc.begin();            //Inicialização do RTC DS3231
   // rtc.setDateTime(__DATE__, __TIME__);   //Configurando valores iniciais
   pinMode(8,INPUT_PULLUP); //registra horário inicial
   pinMode(9,INPUT_PULLUP); //registra horário final
   while (!Serial) { // data log
   ; // data log
   }
   if (!SD.begin(4)) { // data log
   lcd.print("CARTAO NAO INSERIDO!"); // data log
   delay(2000);
   lcd.clear();
   return; // data log
   }
   }

    void loop(){
    dataehora = rtc.getDateTime();     //Atribuindo valores instantâneos de data e hora à instância dataehora
    if(dataehora.hour == 16 && dataehora.minute == 19 && dataehora.second == 0) //definicao do relogio
    {
    lcd.clear();
    }
   
    lcd.setCursor(3,0);
    if(dataehora.day<10)
    {
    lcd.print("0");
    }
    lcd.print(dataehora.day);
    if(dataehora.month<10)
    {
    lcd.print("/0");
    }
    //lcd.print("/");
    lcd.print(dataehora.month);
    lcd.print("/");
    lcd.print(dataehora.year);
   
    lcd.setCursor(4,1);
    if(dataehora.hour<10)
    {
    lcd.print("0");
    }
    lcd.print(dataehora.hour);
    if(dataehora.minute<10)
    {
    lcd.print(":0");
    }
    if(dataehora.minute>=10)
    {
    lcd.print(":");
    }
    lcd.print(dataehora.minute);
    if(dataehora.second<10)
    {
    lcd.print(":0");
    }
    if(dataehora.second>=10)
    {
    lcd.print(":");
    }
    lcd.print(dataehora.second);
    delay(1000);     //Tempo p atualização

       int valor1 = digitalRead(8);
       if (valor1 == LOW)
       {
       myFile = SD.open("ponto.txt", FILE_WRITE);
       myFile.print("ENTRADA: ");
       myFile.print(dataehora.day);
       myFile.print("/");
       myFile.print(dataehora.month);
       myFile.print("/");
       myFile.print(dataehora.year);
       myFile.print(" ");
       myFile.print(dataehora.hour);
       myFile.print(":");
       myFile.print(dataehora.minute);
       myFile.print(":");
       myFile.println(dataehora.second);
       myFile.close();
       lcd.clear();
       lcd.print("PONTO REGISTRADO");
       delay(2000);
       lcd.clear();
       }

       int valor2 = digitalRead(9);
       if (valor2 == LOW)
       {
       myFile = SD.open("ponto.txt", FILE_WRITE);
       myFile.print("SAÍDA:   ");
       myFile.print(dataehora.day);
       myFile.print("/");
       myFile.print(dataehora.month);
       myFile.print("/");
       myFile.print(dataehora.year);
       myFile.print(" ");
       myFile.print(dataehora.hour);
       myFile.print(":");
       myFile.print(dataehora.minute);
       myFile.print(":");
       myFile.println(dataehora.second);
       myFile.println(""); //pula uma linha
       myFile.close();
       lcd.clear();
       lcd.print("PONTO REGISTRADO");
       delay(2000);
       lcd.clear();
       }
       }

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