CODE 7.8 | 4×4 키패드로 스마트 도어락 만들기
| 01 | #include <Keypad.h> |
| 02 | #include <Servo.h> |
| 03 | |
| 04 | const byte ROWS = 4; // 키패드 가로줄 개수 |
| 05 | const byte COLS = 4; // 키패드 세로줄 개수 |
| 06 | |
| 07 | // 키패드 문자 배열 설정 |
| 08 | char keys[ROWS][COLS] = { |
| 09 | {'1', '2', '3', 'A'}, |
| 10 | {'4', '5', '6', 'B'}, |
| 11 | {'7', '8', '9', 'C'}, |
| 12 | {'*', '0', '#', 'D'} |
| 13 | }; |
| 14 | |
| 15 | // 키패드를 연결한 아두이노 핀 설정 |
| 16 | byte rowPins[ROWS] = {9, 8, 7, 6}; // 가로줄 핀 |
| 17 | byte colPins[COLS] = {5, 4, 3, 2}; // 세로줄 핀 |
| 18 | |
| 19 | Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS); // Keypad 객체 생성 |
| 20 | Servo doorServo; // 서보 모터 객체 생성 |
| 21 | |
| 22 | String password = "1234"; // 설정된 비밀번호 |
| 23 | String inputString = ""; // 입력받은 비밀번호 저장 |
| 24 | |
| 25 | void setup() { |
| 26 | Serial.begin(9600); // 시리얼 모니터 통신 시작 |
| 27 | doorServo.attach(10); // 서보 모터를 연결한 디지털 핀 |
| 28 | doorServo.write(0); // 서보 모터 초기 각도 설정 |
| 29 | } |
| 30 | |
| 31 | void 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 | } |
틴커캐드 회로도
버튼 또는 주소를 클릭하면 새 창에서 회로도가 열립니다.
https://www.tinkercad.com/things/9mc23AyBg55-743-
답글삭제