#include <DS1302.h>
#include <EEPROM.h>
#include <SPI.h>
#include <MFRC522.h>
void printHex(byte *buffer, byte bufferSize);
#define SS_PIN 10
#define RST_PIN 9
byte nuidPICC[4];
int address = 0;
///
DS1302 rtc(2, 3, 4); //对应DS1302的RST,DAT,CLK
void initRTCTime(void)//初始化RTC时钟
{
rtc.writeProtect(false); //关闭写保护
rtc.halt(false); //清除时钟停止标志
Time t(2020, 4, 25, 21, 50, 50, 7); //新建时间对象 最后参数位星期数据,周日为1,周一为2以此类推
rtc.time(t);//向DS1302设置时间数据
}
void saveTime()//打印时间数据
{
Time tim = rtc.time(); //从DS1302获取时间数据
char buf[12];
snprintf(buf, sizeof(buf), "%02d-%02d %02d:%02d",
tim.mon, tim.date, tim.hr, tim.min);
Serial.println(buf);
// for(int i = 0;i <= 11; i++)
// {
EEPROM.write(address,tim.mon);
EEPROM.write(address+2,tim.date);
EEPROM.write(address+4,tim.hr);
EEPROM.write(address+6,tim.min);
// }
address+=7;
}
///
MFRC522 rfid(SS_PIN, RST_PIN); //创建MFRC522实例
MFRC522::MIFARE_Key key;
//byte t[3]={6,0,0};
void setup() {
Serial.begin(9600);
SPI.begin(); //初始化 SPI 总线
rfid.PCD_Init(); //初始化 MFRC522 卡
for (byte i = 0; i < 6; i++) {
key.keyByte[i] = 0xFF;
}
}
//initRTCTime(void);
void loop() {
//
// delay(1000);
// t[2]++;
// if(t[2]==60){
// t[1]++;
// t[2]=0;
// }
// if(t[1]==60){
// t[0]++;
// t[1]=0;
// }
// if(t[0]==24){
// t[0]=0;
// }
//
///
if(!rfid.PICC_IsNewCardPresent())
return;
if(!rfid.PICC_ReadCardSerial())
return;
saveTime();//打印时间
for (byte i = 0; i < 4; i++) {
nuidPICC[i] = rfid.uid.uidByte[i];
}
Serial.print(F("Hex1:"));
printHex(rfid.uid.uidByte, rfid.uid.size);//函数调用(buffer[i],bufferSize)
Serial.println();
//暂停PICC
rfid.PICC_HaltA();
//暂停PCD上的加密
rfid.PCD_StopCrypto1();
///
for (byte i = 0; i < 4; i++)
{
EEPROM.write(address, rfid.uid.uidByte[i]);
address = address + 1;
if (address == EEPROM.length())
{
while(Serial){}//等待
}
}
// int asdfghjkl = printTime();
// for(byte j = 0; j <= 2; j++)
// {
// EEPROM.write(address,asdfghjkl);
//
//
// address = address + 1;
// if (address == EEPROM.length())
// {
// while(Serial){}//等待
// }
// }
///
}
void printHex(byte *buffer, byte bufferSize) {
for (byte i = 0; i < bufferSize; i++) {
Serial.print(buffer[i] < 0x10 ? "0" : "");
Serial.print(buffer[i], HEX);
}
Serial.print("#");
}
arduino打卡
最新推荐文章于 2024-05-31 10:58:49 发布