이전에 Arduino UNO와 조이스틱을 인터페이스하여 작동 방식을 이해하고 왼쪽, 오른쪽, 위아래로 움직이는 4 개의 LED를 제어했습니다. 이 프로젝트에서는 게임 패드 또는 게임 컨트롤러 와 동일한 조이스틱을 사용하여 왼쪽, 오른쪽, 위아래 움직임이 필요한 모든 컴퓨터 게임을 할 것입니다. 더 많은 제어 옵션이 필요한 게임을하려면 두 개 이상의 조이스틱을 사용할 수 있습니다. 여기서는 Arduino Leonardo를 사용하여 조이스틱을 게임 컨트롤러로 인터페이스합니다. Arduino Leonardo는 USB 드라이버를 설치할 수 있으며 연결시 컴퓨터에서 마우스, 키보드 또는 조이스틱으로 감지 할 수 있다는 점에서 Uno에 비해 장점이 있습니다.
필요한 구성 요소
- Arduino Leonardo
- 이중 축 XY 조이스틱 모듈
- Arduino IDE
- 전선 연결
Arduino Leonardo
이 프로젝트에서 우리는 Arduino Leonardo를 사용하고 있으며 ATmega32u4를 기반으로하는 마이크로 컨트롤러 보드입니다. 20 개의 디지털 입력 / 출력 핀 (7 개는 PWM 출력으로, 12 개는 아날로그 입력으로 사용 가능), 16MHz 수정 발진기, 마이크로 USB 연결, 전원 잭, ICSP 헤더 및 리셋 버튼이 있습니다. 여기에는 마이크로 컨트롤러를 지원하는 데 필요한 모든 것이 포함되어 있습니다. USB 케이블로 컴퓨터에 연결하거나 AC-DC 어댑터 또는 배터리로 전원을 공급하기 만하면 시작할 수 있습니다.
Leonardo는 ATmega32u4에 USB 통신이 내장되어있어 보조 프로세서가 필요 없다는 점에서 이전의 모든 보드와 다릅니다. 이렇게하면 Leonardo가 연결된 컴퓨터에 가상 (CDC) 직렬 / COM 포트 외에 마우스 및 키보드로 표시 될 수 있습니다.
기술 사양
마이크로 컨트롤러 | ATmega32u4 |
작동 전압 | 5V |
입력 전압 (권장) | 7-12V |
입력 전압 (한계) | 6-20V |
디지털 I / O 핀 | 20 |
PWM 채널 | 7 |
아날로그 입력 채널 | 12 |
I / O 핀당 DC 전류 | 40mA |
3.3V 핀의 DC 전류 | 50mA |
플래시 메모리 | 32KB (ATmega32u4) 중 4KB가 부트 로더에서 사용됨 |
SRAM | 2.5KB (ATmega32u4) |
EEPROM | 1KB (ATmega32u4) |
시계 속도 | 16MHz |
길이 | 68.6mm |
폭 | 53.3mm |
무게 | 20g |
핀아웃 참조
이중 축 XY 조이스틱 모듈
조이스틱 은 다양한 모양과 크기로 제공됩니다. 일반적인 조이스틱 모듈 은 아래 그림과 같습니다. 이 조이스틱 모듈은 일반적으로 아날로그 출력을 제공하며이 모듈에서 제공하는 출력 전압은 이동 방향에 따라 계속 변경됩니다. 그리고 마이크로 컨트롤러를 사용하여 이러한 전압 변화를 해석함으로써 움직임의 방향을 알 수 있습니다. 이전에는 조이스틱을 다른 마이크로 컨트롤러와 인터페이스했습니다.
- Arduino와 조이스틱 인터페이스
- Raspberry Pi와 조이스틱 인터페이스
- PIC 마이크로 컨트롤러와 조이스틱 인터페이스
- AVR 마이크로 컨트롤러와 인터페이스하는 조이스틱
이 조이스틱 모듈에는 보시다시피 두 개의 축이 있습니다. X 축과 Y 축입니다. JOY STICK의 각 축은 전위차계 또는 냄비에 장착됩니다. 이 팟의 중간 지점은 Rx와 Ry로 쫓겨납니다. 따라서 Rx와 Ry는이 팟에 대한 가변 포인트입니다. 조이스틱이 대기 상태 일 때 Rx와 Ry는 전압 분배기 역할을합니다.
조이스틱을 수평 축을 따라 움직이면 Rx 핀의 전압이 변경됩니다. 마찬가지로 수직 축을 따라 이동하면 Ry 핀의 전압이 변경됩니다. 따라서 2 개의 ADC 출력에 4 개의 조이스틱 방향이 있습니다. 스틱을 움직이면 각 핀의 전압이 방향에 따라 높거나 낮습니다.
회로도
이 Arduino 조이스틱 게임 컨트롤러 에는 다음과 같이 Arduino와 조이스틱 간의 연결이 필요합니다.
코드 및 작업 설명
데모 비디오 와 함께 완전한 코드가 마지막에 제공됩니다. 여기서 우리는 그것의 몇 가지 중요한 부분을 설명하고 있습니다.
먼저 키보드 라이브러리를 초기화해야합니다.
#포함
다음 코드에서는 아날로그 핀 A0 및 A1에 대한 조이스틱 모듈의 X 및 Y 축을 각각 초기화했습니다.
const int X_pin 및 const int Y_pin 각각
VRX 핀의 아날로그 값을 읽고 값이 1023이면 "up"명령이 제공되고 값이 0이면 "down"명령이 제공됩니다.
마찬가지로 VRY 핀의 아날로그 값을 읽고 값이 1023이면 "right"에 대한 명령이 제공되고 값이 0이면 "left"에 대한 명령이 제공됩니다.
조이스틱은 또한 상단에 누름 버튼이 있으므로이 버튼 (SW)도 판독되며 버튼을 누르면 값이 0이되고 "입력"명령이 제공됩니다.
마지막으로 코드를 Arduino에 굽고 Arduino를 컴퓨터와 연결하십시오.
다음으로 제어판에서 ' 장치 및 프린터' 를 확인하면 아래 이미지와 같이 장치 섹션 아래에 " Arduino Leonardo" 가 표시됩니다. 이제 조이스틱으로 플레이 할 준비가되었습니다.
이 조이스틱을 사용하여 모든 게임 컨트롤을 제어 할 수 있습니다. 조이스틱 내부에는 두 개의 전위차계가 있습니다. 하나는 X 축 이동용이고 다른 하나는 Y 축 이동용입니다. 각 전위차계는 Arduino에서 5V를 얻습니다. 따라서 조이스틱을 움직이면 전압 값이 변경되고 아날로그 핀 A0 및 A1의 아날로그 값도 변경됩니다. 따라서 조이스틱은 게임 패드 역할을합니다.
그래서 이것은 Arduino Leonardo를 사용하여 일반 조이스틱을 게임 컨트롤러로 변환 하는 방법 이며 모든 컨트롤이있는 게임을 왼쪽, 오른쪽, 위, 아래로 이동하는 데 사용할 수 있습니다. 앞서 말했듯이 하나 이상의 조이스틱을 인터페이스하여 이러한 기본 네 가지 기능 외에 더 많은 제어를 얻을 수 있습니다.