페이지

2026년 6월 19일 금요일

7.4.3. 스마트 도어락 만들기






CODE 7.8 | 4×4 키패드로 스마트 도어락 만들기
01#include <Keypad.h>
02#include <Servo.h>
03 
04const byte ROWS = 4; // 키패드 가로줄 개수
05const byte COLS = 4; // 키패드 세로줄 개수
06 
07// 키패드 문자 배열 설정
08char keys[ROWS][COLS] = {
09  {'1', '2', '3', 'A'},
10  {'4', '5', '6', 'B'},
11  {'7', '8', '9', 'C'},
12  {'*', '0', '#', 'D'}
13};
14 
15// 키패드를 연결한 아두이노 핀 설정
16byte rowPins[ROWS] = {9, 8, 7, 6}; // 가로줄 핀
17byte colPins[COLS] = {5, 4, 3, 2}; // 세로줄 핀
18 
19Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Keypad 객체 생성
20Servo doorServo; // 서보 모터 객체 생성
21 
22String password = "1234"; // 설정된 비밀번호
23String inputString = ""; // 입력받은 비밀번호 저장
24 
25void setup() {
26  Serial.begin(9600); // 시리얼 모니터 통신 시작
27  doorServo.attach(10); // 서보 모터를 연결한 디지털 핀
28  doorServo.write(0); // 서보 모터 초기 각도 설정
29}
30 
31void loop() {
32  char key = keypad.getKey(); // 눌린 키 값 읽기
33 
34  // 키가 눌렸을 때만 실행
35  if (key) {
36    // '#' 버튼을 누르면 비밀번호 확인
37    if (key == '#') {
38      if (inputString == password) {
39        Serial.println("Password Correct! Door Opened.");
40        doorServo.write(90); // 문 열기
41        delay(3000); // 3초 대기
42        doorServo.write(0); // 문 닫기
43        Serial.println("Door Closed.");
44      }
45      else {
46        Serial.println("Wrong Password!");
47      }
48 
49      inputString = ""; // 입력값 초기화
50    }
51    // '*' 버튼을 누르면 입력값 초기화
52    else if (key == '*') {
53      inputString = "";
54      Serial.println("Input Cleared.");
55    }
56    // 숫자 버튼을 누르면 입력값에 추가
57    else {
58      inputString += key;
59      Serial.print("*"); // 입력한 숫자 대신 * 출력
60    }
61  }
62}





 

틴커캐드 회로도
버튼 또는 주소를 클릭하면 새 창에서 회로도가 열립니다.

댓글 1개: