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();
}
}
//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
Postar um comentário