아두이노 우노 R4 - 조이스틱
이 가이드에서는 Arduino UNO R4와 함께 조이스틱을 사용하는 방법을 배웁니다. 우리는 다음을 다룰 것입니다:
- 조이스틱의 작동 방식
- 조이스틱을 Arduino UNO R4에 연결하는 방법
- 조이스틱의 값을 읽기 위해 Arduino UNO R4를 프로그래밍하는 방법
- 조이스틱에서 읽은 값을 실행 가능한 값으로 변환하는 방법 (예: 모터의 XY 좌표 또는 방향)
Hardware Preparation
1 | × | Arduino UNO R4 WiFi | Amazon | |
1 | × | Arduino UNO R4 Minima (Alternatively) | Amazon | |
1 | × | USB Cable Type-C | 쿠팡 | Amazon | |
1 | × | Joystick | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Recommended) Screw Terminal Block Shield for Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Breadboard Shield For Arduino UNO R4 | 쿠팡 | Amazon | |
1 | × | (Recommended) Enclosure For Arduino UNO R4 | Amazon | |
1 | × | (Recommended) Power Splitter For Arduino UNO R4 | Amazon |
조이스틱에 대하여
게임 컨트롤러, 장난감 컨트롤러 또는 굴착기 컨트롤러와 같은 대형 기계에서 사용되는 조이스틱을 본 적이 있을 것입니다.
조이스틱에는 정사각형 배열로 배치된 두 개의 포텐셔미터와 하나의 푸시 버튼이 있습니다. 다음과 같은 출력을 제공합니다:
- 수평 위치(X-좌표)에 대한 아날로그 값(0에서 1023)
- 수직 위치(Y-좌표)에 대한 아날로그 값(0에서 1023)
- 버튼의 디지털 상태(HIGH 또는 LOW)
두 개의 아날로그 값을 결합하면 2차원 좌표가 형성됩니다. 조이스틱이 움직이지 않을 때 이 좌표들은 중심에 위치합니다. 테스트 코드를 실행하여 이러한 좌표의 실제 방향을 쉽게 파악할 수 있으며, 이는 다음 섹션에서 다룰 예정입니다.
일부 애플리케이션은 세 가지 출력 모두를 사용할 수 있는 반면, 다른 애플리케이션은 일부만 사용할 수 있습니다.
핀아웃
조이스틱은 다섯 개의 핀을 사용합니다.
- GND 핀: GND(0V)에 연결
- VCC 핀: VCC(5V)에 연결
- VRX 핀: 가로 위치(X좌표)에 대한 아날로그 값을 제공합니다.
- VRY 핀: 세로 위치(Y좌표)에 대한 아날로그 값을 제공합니다.
- SW 핀: 조이스틱의 푸시버튼에서 나옵니다. 일반적으로 열려 있습니다. 풀업 저항기를 사용하면 누르지 않았을 때 이 핀이 HIGH가 되고, 눌렀을 때 LOW가 됩니다.
작동 방식
- 좌/우 움직임
- 조이스틱을 좌우로 움직이면 VRX 핀의 전기 신호(전압)가 변경됩니다.
- 왼쪽으로 움직이면 전압이 0볼트로 낮아집니다.
- 오른쪽으로 움직이면 전압이 5볼트로 증가합니다.
- 아두이노는 이 전압을 읽고 0에서 1023 사이의 숫자로 변환합니다. 따라서 0V는 0에 해당하고, 5V는 1023에 해당합니다.
- 위/아래 움직임:
- 마찬가지로, 조이스틱을 위아래로 움직이면 VRY 핀의 전압이 변경됩니다.
- 위로 움직이면 전압이 0볼트로 낮아집니다.
- 아래로 움직이면 전압이 5볼트로 증가합니다.
- 아두이노는 이 전압도 읽고 VRX 핀과 마찬가지로 0에서 1023 사이의 숫자로 변환합니다.
- 결합된 움직임:
- 조이스틱을 어떤 방향으로 움직이든지(단순히 좌/우 또는 위/아래뿐만 아니라) 각 축에 따라 VRX 및 VRY 핀의 전압이 변경됩니다.
- 조이스틱 누르기:
- 조이스틱을 아래로 누르면(버튼을 누르는 것과 같이) 조이스틱 내부의 내장 버튼이 작동됩니다.
- SW 핀에 풀업 저항을 연결하면 눌렀을 때 이 핀의 전압이 5V에서 0V로 변경됩니다.
- 아두이노는 이 변화를 디지털 신호로 인식하며, 누르지 않았을 때는 HIGH (5V), 눌렀을 때는 LOW (0V)로 표시됩니다.
요약하면, 조이스틱을 움직이면 VRX 및 VRY의 전압이 변경되며, 이는 Arduino가 0과 1023 사이의 숫자로 읽습니다. 조이스틱을 누르면 SW 핀의 전압이 변경되며, 이는 Arduino가 HIGH 또는 LOW로 읽습니다.
Wiring Diagram
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
조이스틱 프로그래밍 방법
조이스틱은 두 개의 구성 요소로 이루어져 있습니다: 아날로그 부분(X 및 Y 축)과 디지털 부분(푸시 버튼).
- X축 및 Y축의 값을 읽으려면 아날로그 입력 핀에서 analogRead() 함수를 사용하면 됩니다.
- 디지털 부품 중 푸시버튼 부분: 그냥 버튼입니다. 쉽고 효과적인 방법은 ezButton 라이브러리를 사용하는 것입니다. 이 라이브러리는 버튼의 안정성을 관리하고 버튼을 안정적으로 유지하기 위한 내부 시스템도 활성화합니다. Arduino UNO R4 - 버튼 튜토리얼에서 더 많은 정보를 배울 수 있습니다. 이 튜토리얼의 다음 부분에서는 코드 사용 방법을 보여드리겠습니다.
아날로그 핀에서 값을 얻은 후에는 그 값을 관리하기 쉬운 값으로 변경해야 할 수도 있습니다. 다음 섹션에서는 이에 대한 예제 코드를 제공합니다.
아두이노 UNO R4 코드
다음은 Arduino UNO R4의 예제 코드입니다:
- 예제 코드: 조이스틱에서 아날로그 값을 가져오기
- 예제 코드: 아날로그 값을 가져오고 조이스틱의 버튼 상태 확인
- 예제 코드: 아날로그 값을 명령으로 변경: MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- 예제 코드: 아날로그 값을 각도로 변환하여 두 개의 서보 모터 제어 (팬-틸트 카메라처럼)
조이스틱에서 아날로그 값을 읽습니다.
Detailed Instructions
다음 지침을 단계별로 따르십시오:
- Arduino Uno R4 WiFi/Minima를 처음 사용하는 경우, Arduino IDE에서 Arduino Uno R4 WiFi/Minima 환경 설정 튜토리얼을 참조하십시오.
- 주어진 다이어그램에 따라 조이스틱을 Arduino UNO R4에 연결하십시오.
- USB 케이블을 사용하여 Arduino Uno R4 보드를 컴퓨터에 연결하십시오.
- 컴퓨터에서 Arduino IDE를 실행하십시오.
- 적절한 Arduino Uno R4 보드(예: Arduino Uno R4 WiFi) 및 COM 포트를 선택하십시오.
- 위의 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드하십시오.
- 조이스틱의 엄지스틱을 끝까지 밀고, 원형으로(시계 방향 또는 반시계 방향) 돌리십시오.
- 시리얼 모니터에서 결과를 확인하십시오.
- 조이스틱을 돌릴 때, 시리얼 모니터를 주시하세요. X 값이 0이면 이 위치를 왼쪽으로 기억하고, 반대는 오른쪽입니다. Y 값이 0이면 이 위치를 위쪽으로 기억하고, 반대는 아래쪽입니다.
아날로그 값을 읽고 조이스틱에서 버튼 상태를 읽습니다.
Detailed Instructions
- Arduino IDE의 왼쪽에 있는 Libraries 아이콘으로 이동하십시오.
- “ezButton”을 찾아 ArduinoGetStarted.com에서 제공하는 버튼 라이브러리를 찾으십시오.
- EzButton 라이브러리를 추가하려면 Install 버튼을 누르십시오.
- 코드를 복사하여 Arduino IDE에서 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드합니다.
- 조이스틱 엄지패드를 왼쪽, 오른쪽, 위쪽 또는 아래쪽으로 이동합니다.
- 조이스틱의 상단을 누릅니다.
- 시리얼 모니터에서 결과를 확인합니다.
아날로그 값을 이동 명령(왼쪽/오른쪽/위/아래)으로 변환합니다.
Detailed Instructions
- 위의 코드를 복사하여 Arduino IDE로 엽니다.
- Arduino IDE에서 Upload 버튼을 클릭하여 코드를 Arduino UNO R4에 업로드합니다.
- 조이스틱 엄지손가락을 왼쪽, 오른쪽, 위, 아래 또는 다른 방향으로 움직입니다.
- 시리얼 모니터에서 결과를 확인합니다.
※ NOTE THAT:
때때로 명령이 전혀 없거나 하나의 명령, 또는 동시에 두 개의 명령이 있을 수 있습니다(예: 위와 왼쪽 함께).
아날로그 값을 각도로 변환하여 두 개의 서보 모터를 제어합니다.
Arduino UNO R4 - 조이스틱으로 서보 모터 제어 튜토리얼에서 정보를 찾을 수 있습니다.
Video Tutorial
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.