비밀번호 인증 장치 만들기(천재교육 정보교과서)

아두위키 : Arduwiki

본 위키는 천재교육 고교 정보교과서 내 P. 220 비밀번호 인증 장치 만들기에 해당하는 내용을 서술합니다.


P. 220 다양한 센서를 사용한 비밀번호 인증 장치 만들기

다양한 센서를 사용하여 비밀번호 인증이 가능한 피지컬 컴퓨팅 장치를 만드는 예제입니다.


입력 / 출력 장치 선정

교과서의 예시 중 아두이노를 활용한 방법을 사용합니다.

이 외에도 3x4 키패드 같은 다른 입력장치를 활용할 수 있습니다.

택트 스위치, 부저와 관련된 자세한 내용은 링크 문서를 참고해주세요.


회로 구성

  • 스위치 1~4 : 아두이노 D2 ~ D5핀
  • 부저 : 아두이노 D6핀

아두이노 코드

두 번째 줄에서 미리 설정해둔 비밀번호에 따라 입력받은 비밀번호를 판정합니다.

비밀번호를 맞추었을 때와 틀렸을 때 부저의 소리가 다르게 울립니다.

const int buttonPins[4] = {2, 3, 4, 5};
const String correctPassword = "0123"; // 설정된 비밀번호
String inputPassword = "";
const int buzzerPin = 6; // 부저 핀 번호

void setup() {
  Serial.begin(9600);
  for (int i = 0; i < 4; i++) {
    pinMode(buttonPins[i], INPUT_PULLUP); // 내부 풀업 저항 사용
  }
  pinMode(buzzerPin, OUTPUT); // 부저 핀을 출력으로 설정
}

void loop() {
  for (int i = 0; i < 4; i++) {
    if (digitalRead(buttonPins[i]) == LOW) { // 버튼이 눌리면
      inputPassword += String(i); // 버튼 번호 추가
      delay(300); // 디바운스 처리
    }
  }
  
  if (inputPassword.length() == 4) { // 4자리 비밀번호 입력 시
    Serial.print("입력한 비밀번호: ");
    Serial.println(inputPassword);
    if (inputPassword == correctPassword) {
      Serial.println("비밀번호가 일치합니다!");
      tone(buzzerPin, 1000, 500); // 1000Hz 소리, 500ms 동안
    } else {
      Serial.println("비밀번호가 일치하지 않습니다.");
      tone(buzzerPin, 500, 500); // 500Hz 소리, 500ms 동안
    }
    inputPassword = ""; // 입력 초기화
  }
}


실행결과

1. 시리얼 모니터

네 자리 버튼을 누르고 나면 입력된 비밀번호와 일치 여부가 표시됩니다.


2. 실행 영상

비밀번호 일치 여부에 따라 부저가 다르게 울립니다.