/*
RFID 모듈
RFID 라이브러리가 필요. 아래링크에서 다운로드
https://github.com/miguelbalboa/rfid
www.devicemart.co.kr
*/
#include <SPI.h>
#include <MFRC522.h>
#define SDA_PIN 10 // SDA핀 설정
#define RST_PIN 9 // RESET 핀 설정
MFRC522 rfid(SDA_PIN, RST_PIN); // rfid로 객체 생성
void setup()
{
Serial.begin(9600); // 통신 속도 9600으로 시리얼 통신 시작
SPI.begin(); // SPI 통신 시작
rfid.PCD_Init(); // RFID 시작
Serial.println("touch a key");
Serial.println();
}
void loop()
{
// 카드를 읽으면 진행, 읽지못하면 리턴
if ( ! rfid.PICC_IsNewCardPresent())
{
return;
}
// ID가 읽어지면 진행, 읽지못하면 리턴
if ( ! rfid.PICC_ReadCardSerial())
{
return;
}
Serial.print("UID tag :");
String content= ""; // 문자열 자료형 content 선언
for (byte i = 0; i < rfid.uid.size; i++) // tag를 읽고 출력하는 프로그램
{
// 삼항 연산자. 16(0x10)보다 작으면 " 0"을 아니면 " "을 출력
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
// 16진수로 출력
Serial.print(rfid.uid.uidByte[i], HEX);
// 문자열을 string에 추가
content.concat(String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(rfid.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase(); // string의 문자를 대문자로 수정
// 당신의 카드 ID로 바꾸세요.
// string의 1번부터 문자열 끝까지 반환 한 값과 tag 가 일치한다면
if (content.substring(1) == "84 BA F3 1E")
{
Serial.println("접근 승인"); // 메시지 출력
Serial.println();
delay(3000);
}
else
{
Serial.println("접근 불가"); // 메시지 출력
delay(3000);
}
}
|
0 댓글