#include <deprecated.h>
#include <MFRC522.h>
#include <MFRC522Extended.h>
#include <require_cpp11.h>
#include <SPI.h>
#include <MFRC522.h>
#define SS_PIN 10
#define RST_PIN 9
MFRC522 rfid(SS_PIN, RST_PIN); //rfid 객체 생성
#include <Servo.h> // 서보 라이브러리를 지정
#define servoPin 9 // 서보 모터핀을 지정
Servo servo; // 서보 라이브러리 변수를 선언
int pos=0; // 현재 각도를 저장할 변수를 지정한다
int RLED=7; // 빨간색 LED단자를 아두이노 7번과 연결
int GLED=6; // 초록색 LED단자를 아두이노 6번과 연결
void setup()
{
pinMode(RLED, OUTPUT); // RED LED를 출력으로 지정
pinMode(GLED, OUTPUT); // GREEN LED를 출력으로 지정
servo.attach(servoPin); // 서보모터 핀을 설정한다
servo.write(0); // 서보모터 0도 위치로 초기화
Serial.begin(9600); // 시리얼 통신 시작
SPI.begin(); // SPI 통신 시작
rfid.PCD_Init(); // rfid(MFRC522) 초기화
Serial.println("Approximate your card to the reader...");
Serial.println();
}
void loop()
{
// 새카드 접촉이 있을 때만 다음 단계로 넘어감
if ( ! rfid.PICC_IsNewCardPresent())
{
return;
}
// 카드 읽힘이 제대로 되면 다음으로 넘어감
if ( ! rfid.PICC_ReadCardSerial())
{
return;
}
// UID 값을 16진 값으로 읽고 저장한 후 시리얼 모니터로 표시함
Serial.print("UID tag :");
String content= "";
byte letter;
for (byte i = 0; i < rfid.uid.size; i++)
{
Serial.print(rfid.uid.uidByte[i] < 0x10 ? " 0" : " ");
Serial.print(rfid.uid.uidByte[i], HEX);
content.concat(String(rfid.uid.uidByte[i] < 0x10 ? " 0" : " "));
content.concat(String(rfid.uid.uidByte[i], HEX));
}
Serial.println();
Serial.print("Message : ");
content.toUpperCase();
if (content.substring(1) == "E4 84 F4 1E")// 엑세스 승인 하고자하는 UID 기록
{
// 인증이 되면 Green LED와 함께 서보모터를 작동시킨다.
Serial.println("Authorized access");
Serial.println();
digitalWrite(GLED,HIGH);
servo.write(180); // 서보모터의 각도를 변경한다
delay(3000); // 서보 모터의 각도가 변하는 것을 기다려 준다.
}
else { // 서보모터는 작동 없이 Red LED만 켜고 끈다
Serial.println(" Access denied"); // 그외 UID는 승인 거부 표시
digitalWrite(RLED,HIGH);
delay(3000);
digitalWrite(RLED,LOW);
}
}
여기에서 카드 한번찍으면 모터가 180도 회전하고 한번더찍으면 다시 0도로 돌아오게하려면 어떻게 해야하나요? 지금 180도까지 돌리는건 성공했는데 0도로 다시 돌아오게 하려면 어떻게 해야할지 모르겠네요
과제는 스스로
과제가 아니라 고딩 혼자 도어락 만들고 있는데 너무힘들어요
카드찍을때마다 시리얼 받아와서 모니터로 뿌리겠네 그다음에 if문 접근하는데 접근할때마다 180도로 돌릴지 0도로 돌릴지 플래그변수 boolean으로 하나 두고 체크하고 서보 돌리고나면 true false ... 바꿔주면 되겠네 - dc App
어렵네요..썅.ㅣ..감사합니다
아두이노가 문제가아니라 로직 구현 부분의 문제인듯. 종이랑 펜들고와서 어떻게 작동시켜야할지 논리적으로 정리하는게 우선일듯. 그나이에 새벽까지 뭔가 만드는게 대단하네 - dc App
시험도 끝나고 시간도 남아서 공부하고 있는데 너무 어렵ㅁ네요ㅠㅠ 조언 감사합니다 자주 놀러오겠습니다 코로나 조심하고 항상 건강하세요~
만들고 후기점. ㅎㅎ 즐코 - dc App
넵!! 감사합니다!!
아마갤 ㄱㄱ