아두이노 키패드 서보 모터

이 튜토리얼에서는 키패드, 서보 모터, 그리고 아두이노를 함께 사용하는 방법을 배우려고 합니다:

준비물

1×아두이노 우노 R3 쿠팡 | 아마존
1×USB 2.0 타입 A-to-B 케이블 (USB-A PC용) 쿠팡 | 아마존
1×USB 2.0 타입 C-to-B 케이블 (USB-C PC용) 아마존
1×키패드 3x4 and 4x4 Kit 쿠팡 | 아마존
1×(또는) 키패드 3x4 쿠팡 | 아마존
1×(또는) 키패드 4x4 쿠팡 | 아마존
1×서보 모터 쿠팡 | 아마존
1×5V 전원 어댑터 아마존
1×DC 커넥터 전원 연결 잭 플러그 소켓 쿠팡 | 아마존
1×점퍼케이블 쿠팡 | 아마존
1×(추천) 아두이노 우노용 스크루 터미널 블록 쉴드 쿠팡 | 아마존
1×(추천) Sensors/Servo Expansion Shield for Arduino Uno 쿠팡 | 아마존
1×(추천) 아두이노 우노용 브레드보드 쉴드 쿠팡 | 아마존
1×(추천) 아두이노 우노용 케이스 쿠팡 | 아마존
1×(추천) 아두이노 우노용 프로토타이핑 베이스 플레이트 & 브레드보드 키트 아마존
공개: 이 포스팅 에 제공된 일부 링크는 아마존 제휴 링크입니다. 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

키패드와 서보 모터에 대하여

키패드와 서보 모터(핀 아웃, 작동 방식, 프로그래밍 방법 등)에 대해 모르신다면, 다음 튜토리얼에서 배우십시오:

선연결

아두이노 키패드 서보 모터 연결 배선도

이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.

아두이노 코드 - 비밀번호가 맞으면 서보 모터를 회전시킵니다.

아래 코드는 비밀번호가 맞으면 서보 모터를 5초 동안 90도로 돌립니다. 5초 후에 서보 모터를 0도로 돌립니다.

/* * 이 아두이노 코드는 newbiely.kr 에서 개발되었습니다 * 이 아두이노 코드는 어떠한 제한 없이 공개 사용을 위해 제공됩니다. * 상세한 지침 및 연결도에 대해서는 다음을 방문하세요: * https://newbiely.kr/tutorials/arduino/arduino-keypad-servo-motor */ #include <Keypad.h> #include <Servo.h> #define ROW_NUM 4 // 네 개의 행 #define COLUMN_NUM 4 // 네 개의 열 #define SERVO_PIN A0 // 서보 모터에 연결하는 아두이노 핀 Servo servo; // 서보 모터 char keys[ROW_NUM][COLUMN_NUM] = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', '9', 'C'}, {'*', '0', '#', 'D'} }; byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // 키패드의 행 핀아웃에 연결 byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // 키패드의 열 핀아웃에 연결 Keypad keypad = Keypad( makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM ); const String password_1 = "ABC1234"; // 여기서 비밀번호 변경 const String password_2 = "5642B"; // 여기서 비밀번호 변경 const String password_3 = "9765"; // 여기서 비밀번호 변경 String input_password; int angle = 0; // 서보 모터의 현재 각도 unsigned long lastTime; void setup() { Serial.begin(9600); input_password.reserve(32); // 최대 비밀번호 크기는 32, 필요시 변경 servo.attach(SERVO_PIN); servo.write(0); // 서보 모터를 0°로 회전 lastTime = millis(); } void loop() { char key = keypad.getKey(); if (key) { Serial.println(key); if (key == '*') { input_password = ""; // 입력된 비밀번호 초기화 } else if (key == '#') { if (input_password == password_1 || input_password == password_2 || input_password == password_3) { Serial.println("비밀번호가 정확합니다, 서보 모터를 90°로 회전합니다"); angle = 90; servo.write(angle); lastTime = millis(); } else { Serial.println("비밀번호가 틀렸습니다, 다시 시도해보세요"); } input_password = ""; // 입력된 비밀번호 초기화 } else { input_password += key; // 입력된 비밀번호 문자열에 새 문자 추가 } } if (angle == 90 && (millis() - lastTime) > 5000) { // 5초 angle = 0; servo.write(angle); Serial.println("서보 모터를 0°로 회전합니다"); } }

사용 방법

  • 아두이노를 USB 케이블을 통해 PC에 연결하세요
  • 아두이노 IDE를 열고, 올바른 보드와 포트를 선택하세요
  • 아두이노 IDE의 왼쪽 바에 있는 Libraries 아이콘으로 이동하세요.
  • “keypad”를 검색한 다음, Mark Stanley, Alexander Brevig이 만든 키패드 라이브러리를 찾으세요
  • 키패드 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
아두이노 키패드 라이브러리
  • 위의 코드를 복사하여 Arduino IDE로 열기
  • 코드를 아두이노에 업로드하려면 아두이노 IDE에서 Upload 버튼을 클릭하세요.
아두이노 코딩
  • 12345#를 누르세요.
  • 5642B#를 누르세요.
  • 시리얼 모니터에서 결과를 확인하고 서보 모터의 상태를 확인하세요.
Newbiely | Arduino IDE 2.3.8
──
File
Edit
Sketch
Tools
Help
Arduino Uno
Newbiely.ino
···
8 Serial.println("Hello World!");
Output
Serial Monitor
Message (Enter to send message to 'Arduino Uno' on 'COM15')
New Line
9600 baud
The password is incorrect, try again The password is correct, rotating Servo Motor to 90° Rotating Servo Motor to 0°
Ln 11, Col 1
Arduino Uno on COM15
2

코드 설명

아두이노 코드에 사전 정의된 승인된 비밀번호들이 있습니다.

사용자가 입력한 비밀번호를 저장하는 데 사용되는 문자열이 있으며, input_password라고 합니다. 키패드에서 두 개의 키(*#)는 특별한 용도로 사용됩니다: 비밀번호 지우기와 비밀번호 종료. 키패드의 키를 누르면:

  • 눌린 키가 두 개의 특수 키 중 하나가 아니면, 그 키는 input_password에 추가됩니다.
  • 눌린 키가 * 일 경우, input_password는 초기화됩니다. 이 기능을 사용하여 비밀번호 입력을 시작하거나 재시작할 수 있습니다.
  • 눌린 키가 # 일 경우:
    • input_password는 사전에 정의된 비밀번호와 비교됩니다. 사전에 정의된 비밀번호 중 하나와 일치한다면, 서보 모터를 90도 회전시킵니다.
    • 비밀번호의 정확성과 관계없이, 다음 입력을 위해 input_password는 초기화됩니다.

동영상

비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.