BASIC4MCU | 질문게시판 | 아두이노 RFID
페이지 정보
작성자 아두이노배우기 작성일2020-09-08 14:15 조회2,644회 댓글0건본문
안녕하세요~ 아두이노 공부하면서 많은 도움이 되고 있습니다.
아두이노 RFID 태그를 이용해서
1. 한번 접촉하면 "출발하세요"
2. 다시 한번 접촉하면 "수고 하셨습니다"
여기까지는 했습니다.
여기에서 "수고하셨습니다" 다음에 걸린 시간을 넣으려고 합니다.
한번-두번 접촉했을 때 걸린시간입니다.
다시 접촉하면 새로운 걸리 시간이 표현되어야 하는데 걸린시간이 쭉 합산으로 나옵니다.
어떻게 해야할까요?
#include <SPI.h>
#include <MFRC522.h>#define SDA_PIN 10 // SDA핀 설정
#define RST_PIN 9 // RESET 핀 설정MFRC522 rfid(SDA_PIN, RST_PIN); // rfid로 객체 생성
unsigned long preTime;
int flag=0,stat=0;
void setup()
{
Serial.begin(9600); // 통신 속도 9600으로 시리얼 통신 시작
SPI.begin(); // SPI 통신 시작
rfid.PCD_Init(); // RFID 시작
Serial.println();
}void loop()
{
// 카드를 읽으면 진행, 읽지못하면 리턴
if ( ! rfid.PICC_IsNewCardPresent())
{
return;
}// ID가 읽어지면 진행, 읽지못하면 리턴
if ( ! rfid.PICC_ReadCardSerial())
{
return;
}String content= ""; // 문자열 자료형 content 선언
for (byte i = 0; i < rfid.uid.size; i++) // tag를 읽고 출력하는 프로그램
{
// 삼항 연산자. 16(0x10)보다 작으면 " 0"을 아니면 " "을 출력
// 문자열을 string에 추가content.concat(String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(rfid.uid.uidByte[i], HEX));
}content.toUpperCase(); // string의 문자를 대문자로 수정
// 당신의 카드 ID로 바꾸세요.// string의 1번부터 문자열 끝까지 반환 한 값과 tag 가 일치한다면
if (content.substring(1) == "7B E3 15 32")
{
preTime=0;
if(flag==0){
flag=1;
stat^=1;
if(stat){
Serial.println("출발하세요"); // 메시지 출력
Serial.println();
delay(500);
}
else {
unsigned nowTime =millis();
Serial.println("수고하셨습니다.");
Serial.println(nowTime);
nowTime=0;
delay(500);
}
}
else {flag=0; delay(100);}
}
}
댓글 0
조회수 2,644등록된 댓글이 없습니다.