About Lesson
기본설정
- 아두이노 설치 및 환경설정이 완료된 상태여야 합니다.
2. 라이브러리는 하기 버튼을 눌러 다운로드하고 설치하세요
3. 아래 소스코드를 보드설정-컴파일-업로드 과정을 진행 후 실행하세요
소스 코드
– 코드설명 :
- 카드 고유번호 찾기
- 코드를 업로드 한 후 동봉된 카드를 NFC부품에 접촉하면 각 카드의 고유번호가 시리얼모니터에 출력됩니다.
* 출력된 고유번호를 복사하여 다음 RGB LED 작동 코딩코드에 대입합니다.
- 코드를 업로드 한 후 동봉된 카드를 NFC부품에 접촉하면 각 카드의 고유번호가 시리얼모니터에 출력됩니다.
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); // RFID 객체 생성
void setup() {
Serial.begin(9600);
SPI.begin(); // SPI 통신 시작
rfid.PCD_Init(); // RC522 초기화
Serial.println("NFC 카드 대기 중...");
}
void loop() {
// 카드가 감지되지 않으면 리턴
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
// UID 출력
Serial.print("카드 UID: ");
for (byte i = 0; i < rfid.uid.size; i++) {
Serial.print(rfid.uid.uidByte[i] < 0x10 ? "0" : "");
Serial.print(rfid.uid.uidByte[i], HEX);
Serial.print(" ");
}
Serial.println();
// 카드와의 통신 종료
rfid.PICC_HaltA();
}
2. RGB LED 작동
- NFC 센서는 NFC 태그를 감지해 전기적 변화를 발생시킵니다.
- NFC 태그의 고유 UID 값에 따라 RGB LED의 색상이 제어됩니다.
– 카드 인식 전 : LED OFF 상태 유지
– 카드 인식 후 : UID 값에 따라 빨간색, 초록색, 파란색 등으로 LED 색상 변경 - LED는 잠시 점등 후 자동 OFF
#include
#include
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN);
int redPin = 3;
int greenPin = 4;
int bluePin = 5;
void setup() {
Serial.begin(9600);
SPI.begin();
rfid.PCD_Init();
pinMode(redPin, OUTPUT);
pinMode(greenPin, OUTPUT);
pinMode(bluePin, OUTPUT);
setColor(0, 0, 0); // LED OFF
Serial.println("RFID LED 제어 시스템 시작");
Serial.println("카드를 스캔하세요...");
}
void loop() {
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial()) {
return;
}
Serial.print("Card UID: ");
String uidString = "";
for (byte i = 0; i < rfid.uid.size; i++) {
if (rfid.uid.uidByte[i] < 0x10) {
uidString += "0"; // 한 자리 16진수 앞에 0 추가
}
uidString += String(rfid.uid.uidByte[i], HEX);
}
uidString.toUpperCase(); // 대문자로 변환
Serial.println(uidString);
// 카드 UID에 따라 LED 색상 제어
if (uidString == "7712687B") { // 파란색 카드의 실제 카드의 UID를 띄어쓰기없이 작성해주세요
Serial.println("1번 파란색 카드 인식!");
setColor(0, 255, 0); // 파란색LED
} else if (uidString == "A130A81B") {// 하얀색 카드의 실제 카드의 UID를 띄어쓰기없이 작성해주세요
Serial.println("2번 하얀색 카드 인식!");
setColor(255, 0, 0); // 초록색LED
} else {
Serial.println("미등록 카드입니다.");
setColor(0, 0, 255); // 빨간색LED (미등록)
}
delay(2000); // 2초간 LED 유지
setColor(0, 0, 0); // LED OFF
// 카드 통신 종료
rfid.PICC_HaltA();
rfid.PCD_StopCrypto1();
delay(500); // 다음 스캔까지 0.5초 대기
}
void setColor(int redVal, int greenVal, int blueVal) {
analogWrite(redPin, redVal);
analogWrite(greenPin, greenVal);
analogWrite(bluePin, blueVal);
}