비밀번호 인증 장치 만들기(천재교육 정보교과서)
본 위키는 천재교육 고교 정보교과서 내 P. 220 비밀번호 인증 장치 만들기에 해당하는 내용을 서술합니다.
P. 220 다양한 센서를 사용한 비밀번호 인증 장치 만들기
다양한 센서를 사용하여 비밀번호 인증이 가능한 피지컬 컴퓨팅 장치를 만드는 예제입니다.
입력 / 출력 장치 선정
교과서의 예시 중 아두이노를 활용한 방법을 사용합니다.
- 입력장치 : 아두이노 보드, 버튼(택트 스위치) 4개, 저항, 점퍼 케이블(연결선)
- 출력장치 : 부저
이 외에도 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. 실행 영상
비밀번호 일치 여부에 따라 부저가 다르게 울립니다.