질문게시판 > 답변 : 아두이노 도어락 질문드립니다 ㅜㅜ

TODAY429 TOTAL3,068,229
사이트 이용안내
Login▼/회원가입
최신글보기 질문게시판 기술자료 동영상강좌

아두이노 센서 ATMEGA128 PWM LED 초음파 AVR 블루투스 LCD UART 모터 적외선


BASIC4MCU | 질문게시판 | 답변 : 아두이노 도어락 질문드립니다 ㅜㅜ

페이지 정보

작성자 master 작성일2022-11-16 14:48 조회2,324회 댓글0건

본문

	

#include <Servo.h>

Servo myservo;

//

#include <SPI.h>

#include <MFRC522.h>

#define RST_PIN   9

#define SS_PIN    10

MFRC522 rfid(SS_PIN,RST_PIN);

//

#include <Wire.h>

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,20,4);

//

const char keymap[4][4]={{'1','2','3','A'},{'4','5','6','B'},{'7','8','9','C'},{'*','0','#','D'}};

//

const int rpin[]={5,4,3,2};

const int cpin[]={A3,A2,A1,A0};

//

char newKey=0,oldKey=0;

char pass0='0',pass1='9',pass2='1',pass3='9';

int lockNunlock=0;

//

byte rfidPass0=0x63;

byte rfidPass1=0xDD;

byte rfidPass2=0x51;

byte rfidPass3=0x16;

//

char passInBuff[4];

int passCnt=0;

//

#define BUZZER_PIN  8

#define SERVO_PIN   7

//

void setup(){

  Serial.begin(9600);

  for(int i=0;i<4;i++){ pinMode(rpin[i],OUTPUT); pinMode(cpin[i],INPUT_PULLUP); }

  myservo.attach(SERVO_PIN);

  myservo.write(90);

  pinMode(BUZZER_PIN,OUTPUT);

  digitalWrite(BUZZER_PIN,LOW);

  SPI.begin();

  rfid.PCD_Init();

  lcd.init(); lcd.backlight(); lcd.clear(); lcd.setCursor(0,0); lcd.print("PASS:");

}

//

void loop(){

  newKey=getkey();

  if(newKey!=oldKey){ oldKey=newKey;

    if(newKey){

      Serial.println(newKey);

      passInBuff[passCnt++]=newKey;

      lcd.print("*");

      if(passCnt>=4){

        lcd.clear(); lcd.print("PASS:");

        passCnt=0;

        if(passInBuff[0]==pass0 && passInBuff[1]==pass1 && passInBuff[2]==pass2 && passInBuff[3]==pass3){

          Serial.println("ok");

          lockNunlock=1;

        }

      }

    }

    delay(50);

  }

  //

  if(rfid.PICC_IsNewCardPresent()){

    if(rfid.PICC_ReadCardSerial()){

      Serial.print("value=");

      Serial.print(rfid.uid.uidByte[0],HEX); Serial.print(rfid.uid.uidByte[1],HEX);

      Serial.print(rfid.uid.uidByte[2],HEX); Serial.println(rfid.uid.uidByte[3],HEX);

      //

      if(rfid.uid.uidByte[0]==rfidPass0 && rfid.uid.uidByte[1]==rfidPass1 && rfid.uid.uidByte[2]==rfidPass2 && rfid.uid.uidByte[3]==rfidPass3){

        Serial.println("rfid ok");

        lockNunlock=1;

      }

      rfid.PICC_HaltA();

      rfid.PCD_StopCrypto1();

    }

  }

  //

  if(lockNunlock==1){ lockNunlock=0;

    myservo.write(180);

    digitalWrite(BUZZER_PIN,HIGH); delay(200); digitalWrite(BUZZER_PIN,LOW); delay(200);

    digitalWrite(BUZZER_PIN,HIGH); delay(200); digitalWrite(BUZZER_PIN,LOW); delay(5000);

  }

  else{ myservo.write(90); }

}

//

char getkey(){

  char key=0;

  for(int i=0;i<4;i++){

    digitalWrite(rpin[i],LOW);

    for(int j=0;j<4;j++){ if(digitalRead(cpin[j])==LOW)key=keymap[i][j]; }

    digitalWrite(rpin[i],HIGH);

  }

  return key;

}

 

 

어떤 방법으로 비밀번호를 입력 할 것인지 정해서 코드를 추가하세요

시리얼통신으로 비밀번호를 변경 할 수도 있을테고

키패드로 비밀번호를 변경 할 수도 있겠죠

'*' 키를 누른채로 전원을 키면 비밀번호 입력모드 <-- 이런식인거죠

셋업함수 마지막에서 getkey() 함수를 호출해서 '*' 키라면 비밀번호 변경시키면 되겠습니다.

 

코드를 잘 분석해서 완전히 이해 한다면 어렵지 않을겁니다.

이해하지 못한다면...남의 도움을 받아야 할텐데

어차피 발표 할 때는 설명해야 할테니 좀 더 노력해서 스스로 만들어보세요

 

말로밖에 도움을 드리지 못하고, 코드만 제 스타일로 정리 해드립니다.

 

  • BASIC4MCU 작성글 SNS에 공유하기
  • 페이스북으로 보내기
  • 트위터로 보내기
  • 구글플러스로 보내기

댓글 0

조회수 2,324

등록된 댓글이 없습니다.

질문게시판HOME > 질문게시판 목록

MCU, AVR, 아두이노 등 전자공학에 관련된 질문을 무료회원가입 후 작성해주시면 전문가가 답변해드립니다.
ATMEGA128PWMLED초음파
아두이노AVR블루투스LCD
UART모터적외선ATMEGA
전체 스위치 센서
질문게시판 목록
제목 작성자 작성일 조회
답변 답변글 답변 : 아두이노 디지털 핀 문제댓글[1] master 23-05-24 803
질문 아두이노 코드 합치기댓글[1] 아두초보이노 23-05-24 694
질문 마그네틱 도어센서 관련 질문드립니다. 엉아 23-05-23 590
답변 답변글 답변 : 마그네틱 도어센서 관련 질문드립니다.댓글[1] master 23-05-24 707
답변 답변글 답변 : 답변 : 마그네틱 도어센서 관련 질문드립니다. master 23-05-24 532
질문 토양습도센서 이용시LCD 오류댓글[5] 윤던 23-05-23 2122
질문 ATMEGA 광센서 부저댓글[2] 코딩 23-05-23 1058
질문 ATMEGA J-KIT 128 스위치 부저댓글[1] 이미지첨부파일 코딩 23-05-22 1058
질문 장애물 회피 게임댓글[1] 첨부파일 헬창 23-05-20 881
질문 회로도 관련 질문댓글[1] 이미지첨부파일 dnjs 23-05-20 939
질문 Atmega FND 왼쪽 2칸엔 고정 오른쪽 2칸엔 1씩증가댓글[1] 초피 23-05-20 828
질문 ATMEGA J-KIT 128 스위치 부댓글[1] 코딩 23-05-19 979
질문 LCD 부저연결질문입니다.댓글[1] Tell 23-05-19 983
질문 세그먼트 lcd출력질문입니다.댓글[1] Tell 23-05-19 809
질문 어떤점이 문제인지 봐주실 수 있을까요?댓글[4] Bs드리프터 23-05-19 1252
질문 아두이노 에러댓글[1] 리쌍 23-05-19 1006
질문 lcd 화면에 글자가 안보이네요댓글[7] 이미지 황룡수색 23-05-19 2835
질문 ATMEGA JKIT 스위치 부저 코딩 23-05-19 957
답변 답변글 답변 : ATMEGA JKIT 스위치 부저 master 23-05-19 713
질문 에러 원인이 궁금합니다.댓글[1] 이미지 황룡수색 23-05-19 722
질문 atmega128 FAN 제어법댓글[1] 고둥 23-05-18 1004
질문 ATEMEGA JKIT 이용하여 스위치 부저 코딩댓글[1] 2상호 23-05-18 877
질문 버튼 과 7-SEGMENT 를 이용하여 전광판에 숫자표시하기댓글[2] 이미지 리쌍 23-05-18 952
질문 atmega 128 jkit 부저 스위치댓글[1] 2상호 23-05-18 1101
질문 작동구현..댓글[2] 근딩 23-05-16 904
질문 릴레이 모듈을 이용해 높은 사용전압부품 사용하기댓글[1] cretom 23-05-14 796
질문 아두이노 버튼으로 led제어 질문댓글[3] wnion 23-05-13 2044
질문 HBE-MCU-All in One 임베디드키트 ATmega128로 시계 만들기 코딩궁금합니다.댓글[1] djwb 23-05-12 1277
질문 atmega128 pwm제어 질문댓글[2] 살려저 23-05-12 1921
질문 스텝모터와 서보모터 오오오 23-05-11 595
게시물 검색

2022년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2021년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2020년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2019년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2018년 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
Privacy Policy
MCU BASIC ⓒ 2020
모바일버전으로보기