아두이노 나노 - 조이스틱 | Arduino Nano - Joystick
이 튜토리얼은 여러분이 아두이노 나노와 조이스틱을 사용하는 방법을 지도합니다. 구체적으로, 우리는 다음을 배울 것입니다:
- How a 2-axis joystick works - 2축 조이스틱의 작동 방식
- How to connect joystick to Arduino Nano and programming for it - 조이스틱을 아두이노 나노에 연결하고 프로그래밍하는 방법
- How to convert the values from joystick into controllable values such as XY coordinates, the motor's up/down/left/right direction... - 조이스틱에서 XY 좌표, 모터의 상/하/좌/우 방향 등의 제어 가능한 값으로 값을 변환하는 방법
준비물
1 | × | Arduino Nano | Amazon | |
1 | × | USB A to Mini-B USB cable | 쿠팡 | Amazon | |
1 | × | Joystick | 쿠팡 | Amazon | |
1 | × | Jumper Wires | Amazon | |
1 | × | (Optional) 9V Power Adapter for Arduino Nano | Amazon | |
1 | × | (Recommended) Screw Terminal Expansion Board for Arduino Nano | 쿠팡 | Amazon |
2축 조이스틱에 관하여
조이스틱을 게임 컨트롤러, 장난감 컨트롤러 또는 굴착기의 조종판과 같은 큰 기계에서 다양한 곳에서 접할 수 있었을 것입니다.
조이스틱은 서로 수직인 두 개의 포텐쇼미터와 푸시 버튼으로 구성되어 있습니다. 따라서, 다음과 같은 출력을 생성합니다:
- 아두이노가 읽는 수평 위치(일명 X좌표)에 해당하는 0에서 1023까지의 아날로그 값
- 아두이노가 읽는 수직 위치(일명 Y좌표)에 해당하는 0에서 1023까지의 아날로그 값
- 푸시 버튼의 디지털 값(높음 또는 낮음)
따라서:
- 두 개의 아날로그 값이 합쳐져 2차원 좌표를 생성할 수 있습니다.
- 2차원 좌표계의 중심은 조이스틱의 휴식 위치입니다.
- 조이스틱의 방향을 결정하기 위해, 다음 섹션에서 이 정보를 제시할 테스트 코드를 실행하세요.
일부 응용 프로그램은 세 가지 출력 모두를 사용할 수도 있고, 다른 응용 프로그램은 그중 일부만을 사용할 수도 있습니다.
조이스틱 핀배열
조이스틱에는 5개의 핀이 있습니다:
- GND 핀: 이것은 GND(0V)에 연결되어야 합니다.
- VCC 핀: 이것은 VCC(5V)에 연결되어야 합니다.
- VRX 핀: 이것은 수평 위치(일명 X좌표)에 해당하는 아날로그 값을 출력합니다.
- VRY 핀: 이것은 수직 위치(일명 Y좌표)에 해당하는 아날로그 값을 출력합니다.
- SW 핀: 이것은 조이스틱 내부의 푸시버튼에서 나오는 출력입니다. 보통 열려있습니다. 이 핀에 풀업 저항이 사용된다면, SW 핀은 눌리지 않았을 때 고전압 상태가 되고, 눌렸을 때 저전압 상태가 됩니다.
작동 원리
- 조이스틱의 엄지 조작을 왼쪽이나 오른쪽으로 움직이면, VRX 핀의 전압이 0에서 5V까지 변화하며, 왼쪽이 0이고 오른쪽이 5V입니다. 이는 아두이노의 아날로그 핀에서 0에서 1023까지의 읽기 값으로 결과가 나타납니다.
- 조이스틱의 엄지 조작을 위쪽이나 아래쪽으로 움직이면, VRY 핀의 전압이 0에서 5V까지 변화하며, 위쪽이 0이고 아래쪽이 5V입니다. 이는 아두이노의 아날로그 핀에서 0에서 1023까지의 읽기 값으로 결과가 나타납니다.
- 조이스틱의 엄지 조작을 어느 방향으로든 움직이면, VRX와 VRY 핀의 전압이 각 축에 대한 위치의 투영에 비례하여 변경됩니다.
- 조이스틱의 엄지 조작을 위에서 아래로 누르면, 조이스틱 내부의 푸시버튼이 닫힙니다. SW 핀에 풀업 저항을 사용하면, SW 핀에서의 출력이 5V에서 0V로 변경되어, 아두이노의 디지털 핀에서 읽기 값이 HIGH에서 LOW로 변경됩니다.
선연결
이 이미지는 Fritzing을 사용하여 만들어졌습니다. 이미지를 확대하려면 클릭하세요.
조이스틱을 위한 프로그래밍 방법
조이스틱은 두 가지 구성요소로 이루어져 있습니다: 아날로그(X, Y축)와 디지털(푸시버튼)입니다.
아날로그 부분(X, Y 축)의 경우, analogRead() 함수를 사용하여 아날로그 입력 핀에서 값을 단순히 읽으십시오.
디지털 부품(푸시버튼)에 대해서는 버튼입니다. 가장 간단하고 편리한 사용 방법은 ezButton 라이브러리와 함께 사용하는 것입니다. 이 라이브러리는 버튼의 디바운스 지원뿐만 아니라 내부 풀업 저항도 제공합니다. 버튼에 대해 자세히 알아보려면 Arduino Nano - Button 튜토리얼을 확인할 수 있습니다. 이에 대한 코드는 이 튜토리얼의 다음 세션에서 제시될 것입니다.
아날로그 핀에서 값을 얻은 후, 그 값을 제어 가능한 값으로 변환해야 할 수도 있습니다. 다음 섹션에서는 이를 위한 예제 코드를 제공할 것입니다.
아두이노 나노 코드
이 섹션에서는 다음과 같이 아두이노 나노 예제 코드를 제공할 것입니다:
- 예제 코드: 조이스틱에서 아날로그 값을 읽기
- 예제 코드: 조이스틱에서 아날로그 값과 버튼 상태를 읽기
- 예제 코드: 아날로그 값을 MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN 명령어로 변환하기
- 예제 코드: 아날로그 값을 각도로 변환하여 두 개의 서보 모터를 제어하기 (예: 팬-틸트 카메라에서)
조이스틱에서 아날로그 값 읽기
사용 방법
- 코드를 복사하고 Arduino IDE에서 열어주세요.
- 코드를 Arduino Nano로 전송하려면 Upload 버튼을 클릭하세요.
- 조이스틱의 엄지를 최대한 밀고 시계 방향이나 반시계 방향으로 원을 그리며 회전시키세요.
- 시리얼 모니터에서 결과를 확인하세요.
조이스틱의 엄지를 돌리면서 시리얼 모니터를 주시하세요.
X 값이 0이면 현재 위치를 왼쪽으로 기록하거나 기억하고, 반대의 경우는 오른쪽으로 합니다.
Y 값이 0이면 현재 위치를 위로 기록하거나 기억하세요. 반대의 경우는 아래입니다.
아날로그 값을 읽고 조이스틱에서 버튼 상태를 읽습니다.
사용 방법
- Arduino IDE의 왼쪽 바에 있는 Libraries 아이콘을 클릭하세요.
- “ezButton”을 검색하고 ArduinoGetStarted.com에서 버튼 라이브러리를 찾으세요.
- 그런 다음, ezButton 라이브러리를 설치하려면 Install 버튼을 클릭하세요.
- 아두이노 IDE로 코드를 복사하고 열어주세요.
- Upload 버튼을 클릭해서 아두이노 나노로 보내세요.
- 조이스틱의 엄지를 왼쪽, 오른쪽, 위, 아래 방향으로 움직여 보세요.
- 조이스틱의 엄지를 위에서 눌러보세요.
- 시리얼 모니터에서 결과를 확인하세요.
아날로그 값을 왼쪽/오른쪽/위/아래 이동 명령으로 변환합니다
사용 방법
- 아두이노 IDE로 코드를 복사하여 엽니다.
- IDE에서 Upload 버튼을 클릭하여 코드를 아두이노 나노로 전송합니다.
- 엄지로 조이스틱을 아무 방향으로 움직입니다.
- 시리얼 모니터에서 결과를 확인합니다.
※ NOTE THAT:
어떤 주어진 순간에는, 명령이 없거나 한 가지 명령, 또는 두 가지 명령(예: 상하와 좌우 동시에)이 있을 수 있습니다.
아날로그 값을 각도로 변환하여 두 개의 서보 모터를 제어합니다
튜토리얼에서 자세한 내용을 확인할 수 있습니다. 제목은 Arduino Nano - 조이스틱으로 서보 모터 제어하기입니다.
동영상
비디오 제작은 시간이 많이 걸리는 작업입니다. 비디오 튜토리얼이 학습에 도움이 되었다면, YouTube 채널 을 구독하여 알려 주시기 바랍니다. 비디오에 대한 높은 수요가 있다면, 비디오를 만들기 위해 노력하겠습니다.