-
Notifications
You must be signed in to change notification settings - Fork 1
Description
#include <SoftwareSerial.h>
#include <SPI.h>
#include <MFRC522.h>
#define RST_PIN 9
#define SS_PIN 10
#define BT_RXD 7
#define BT_TXD 8
SoftwareSerial bluetooth(BT_TXD, BT_RXD); // 블루투스 모듈 설정
MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 객체 생성
bool tableOccupied = false; // 테이블 사용 상태를 추적하는 변수
void setup() {
Serial.begin(9600); // 시리얼 모니터 통신 시작
SPI.begin(); // SPI 통신 시작
mfrc522.PCD_Init(); // RFID 리더 초기화
bluetooth.begin(9600); // 블루투스 통신 시작
Serial.println("RFID and Bluetooth ready!");
}
void loop() {
// 새로운 카드가 감지되었는지 확인
if (mfrc522.PICC_IsNewCardPresent() && mfrc522.PICC_ReadCardSerial()) {
String readUID = "";
for (byte i = 0; i < mfrc522.uid.size; i++) {
readUID += String(mfrc522.uid.uidByte[i] < 0x10 ? "0" : "");
readUID += String(mfrc522.uid.uidByte[i], HEX);
}
readUID.toUpperCase(); // 대문자로 변환
if (readUID == "44EB155B") {
// 테이블의 상태를 토글
tableOccupied = !tableOccupied;
if (tableOccupied) {
// 테이블이 사용 중으로 변경될 경우
Serial.println("1번 테이블 사용 중");
bluetooth.println("1,true"); //테이블 1번이라는 의미인 1, 테이블이 사용 중이라는 의미인 true
} else {
// 테이블이 비어 있음으로 변경될 경우
Serial.println("1번 테이블 비어 있음");
bluetooth.println("1,false"); //테이블 1번이라는 의미인 1, 테이블이 비어 있다는 것이라는 의미인 false
}
}
else if (readUID == "E7371BED") {
// 테이블의 상태를 토글
tableOccupied = !tableOccupied;
if (tableOccupied) {
// 테이블이 사용 중으로 변경될 경우
Serial.println("2번 테이블 사용 중");
bluetooth.println("2,true"); //테이블 2번이라는 의미인 2, 테이블이 사용 중이라는 의미인 true
} else {
// 테이블이 비어 있음으로 변경될 경우
Serial.println("2번 테이블 비어 있음");
bluetooth.println("2,false"); //테이블 2번이라는 의미인 2, 테이블이 비어 있다는 것이라는 의미인 false
}
}
else if (readUID == "65E7F829") {
// 테이블의 상태를 토글
tableOccupied = !tableOccupied;
if (tableOccupied) {
// 테이블이 사용 중으로 변경될 경우
Serial.println("3번 테이블 사용 중");
bluetooth.println("3,true"); //테이블 3번이라는 의미인 3, 테이블이 사용 중이라는 의미인 true
} else {
// 테이블이 비어 있음으로 변경될 경우
Serial.println("3번 테이블 비어 있음");
bluetooth.println("3,false"); //테이블 3번이라는 의미인 3, 테이블이 비어 있다는 것이라는 의미인 false
}
}
else if (readUID == "049C906A") {
// 테이블의 상태를 토글
tableOccupied = !tableOccupied;
if (tableOccupied) {
// 테이블이 사용 중으로 변경될 경우
Serial.println("4번 테이블 사용 중");
bluetooth.println("4,true"); //테이블 4번이라는 의미인 4, 테이블이 사용 중이라는 의미인 true
} else {
// 테이블이 비어 있음으로 변경될 경우
Serial.println("4번 테이블 비어 있음");
bluetooth.println("4,false"); //테이블 4번이라는 의미인 4, 테이블이 비어 있다는 것이라는 의미인 false
}
}
else if (readUID == "C52CF429") {
// 테이블의 상태를 토글
tableOccupied = !tableOccupied;
if (tableOccupied) {
// 테이블이 사용 중으로 변경될 경우
Serial.println("5번 테이블 사용 중");
bluetooth.println("5,true"); //테이블 5번이라는 의미인 5, 테이블이 사용 중이라는 의미인 true
} else {
// 테이블이 비어 있음으로 변경될 경우
Serial.println("5번 테이블 비어 있음");
bluetooth.println("5,false"); //테이블 5번이라는 의미인 5, 테이블이 비어 있다는 것이라는 의미인 false
}
}
else {
Serial.println("알 수 없는 태그: " + readUID);
// 여기서는 특정 UID가 아닐 때는 아무런 액션을 취하지 않음
}
mfrc522.PICC_HaltA(); // 카드 읽기 중지
delay(1000); // 다음 카드 스캔까지의 딜레이를 추가하여 빠른 재스캔 방지
}
}