arduino打卡

#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("#");
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值