비밀번호 인증 장치 만들기(천재교육 정보교과서): 두 판 사이의 차이

아두위키 : Arduwiki
잔글편집 요약 없음
잔글편집 요약 없음
 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
10번째 줄: 10번째 줄:
교과서의 예시 중 아두이노를 활용한 방법을 사용합니다.
교과서의 예시 중 아두이노를 활용한 방법을 사용합니다.


* '''입력장치''' : 아두이노 보드, 버튼 4개, 저항, 점퍼 케이블(연결선)
* '''입력장치''' : 아두이노 보드, [[택트 스위치(Tact Switch)|버튼(택트 스위치)]] 4개, 저항, 점퍼 케이블(연결선)
* '''출력장치''' : 부저
* '''출력장치''' : [[부저(Buzzer)|부저]]
 
이 외에도 [[3x4 키패드]] 같은 다른 입력장치를 활용할 수 있습니다.
 
[[택트 스위치(Tact Switch)|'''택트 스위치''']], [[부저(Buzzer)|'''부저''']]와 관련된 자세한 내용은 링크 문서를 참고해주세요.
 




=== 회로 구성 ===
=== 회로 구성 ===
이미지


* '''스위치 1~4''' : 아두이노 D2 ~ D5핀
* '''부저''' : 아두이노 D6핀
[[파일:천재교육고교정보교과서비밀번호회로.jpg|918x918픽셀]]


=== 아두이노 코드 ===
=== 아두이노 코드 ===
코드
두 번째 줄에서 미리 설정해둔 비밀번호에 따라 입력받은 비밀번호를 판정합니다.
 
비밀번호를 맞추었을 때와 틀렸을 때 부저의 소리가 다르게 울립니다.<syntaxhighlight lang="c++" line="1">
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 = ""; // 입력 초기화
  }
}
</syntaxhighlight>




=== 실행결과 ===
=== 실행결과 ===
이미지
 
==== 1. 시리얼 모니터 ====
네 자리 버튼을 누르고 나면 입력된 비밀번호와 일치 여부가 표시됩니다.
 
[[파일:천재교육고교정보교과서비밀번호시리얼모니터실행결과.jpg]]
 
 
==== 2. 실행 영상 ====
비밀번호 일치 여부에 따라 부저가 다르게 울립니다.
<div class="coders70">
<youtube> FCx_DTkJ7H0 </youtube>
</div>

2024년 8월 20일 (화) 16:03 기준 최신판

본 위키는 천재교육 고교 정보교과서 내 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. 실행 영상

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