조이스틱 이라는 단어를 듣고 가장 먼저 떠오르는 것은 게임 컨트롤러입니다. 예, 정확히 동일하며 게임 용도로 사용할 수 있습니다. 게임 외에도 DIY 전자 제품에 많은 다른 응용 프로그램이 있습니다. 이 조이스틱은 X 및 Y 평면에 대해 각각 두 개의 전위차계의 조합 일뿐입니다. 전위차계를 통해 전압을 읽고 Arduino에 아날로그 값을 제공하며 조이스틱 샤프트 (단순히 전위차계 포인터)를 움직일 때 아날로그 값이 변경됩니다.
이 회로에서 우리는 Joystick 의 움직임에 따라 4 개의 LED를 제어하는 것만으로 Joystick과 Arduino 를 연결합니다. 우리는 조이스틱 샤프트 이동 방향을 나타내는 방식으로 4 개의 LED를 배치했습니다. 이 조이스틱에는 다양한 다른 용도로 사용하거나 유휴 상태로 둘 수 있는 누름 버튼 이 있습니다. 조이스틱 버튼을 누르면 해당 단일 LED가 켜짐에 따라 단일 LED가 조이스틱의 스위치에도 부착됩니다.
필요한 재료
- Arduino UNO
- 조이스틱 모듈
- LED-5
- 저항기: 100ohm-3
- 전선 연결
- 브레드 보드
회로도
조이스틱 모듈
조이스틱 은 다양한 모양과 크기로 제공됩니다. 일반적인 조이스틱 모듈 은 아래 그림과 같습니다. 이 조이스틱 모듈은 일반적으로 아날로그 출력을 제공하며이 모듈에서 제공하는 출력 전압은 이동 방향에 따라 계속 변경됩니다. 그리고 마이크로 컨트롤러를 사용하여 이러한 전압 변화를 해석함으로써 움직임의 방향을 알 수 있습니다. 이전에는 Joystick을 AVR 및 Raspberry Pi와 인터페이스했습니다.
이 조이스틱 모듈에는 보시다시피 두 개의 축이 있습니다. X 축과 Y 축입니다. JOYSTICK의 각 축은 전위차계 또는 포트에 장착됩니다. 이 팟의 중간 지점은 Rx와 Ry로 쫓겨납니다. 따라서 Rx와 Ry는이 팟에 대한 가변 포인트입니다. 조이스틱이 대기 상태 일 때 Rx와 Ry는 전압 분배기 역할을합니다.
조이스틱이 수평 축을 따라 움직이면 Rx 핀의 전압이 변경됩니다. 마찬가지로 수직 축을 따라 이동하면 Ry 핀의 전압이 변경됩니다. 그래서 우리는 사 가지고 두 개의 ADC 출력에 조이스틱의 방향. 스틱을 움직이면 각 핀의 전압이 방향에 따라 높거나 낮습니다.
여기에서는 마지막 비디오 에서 볼 수 있듯이이 조이스틱 모듈을 내장 ADC (Analog to Digital Converter) 메커니즘과 함께 제공되는 Arduino UNO와 연결합니다. 여기에서 Arduino의 ADC 사용에 대해 자세히 알아보십시오.
코드 및 설명
완전한 Arduino 코드는 끝에 언급되어 있습니다.
아래 코드에서는 아날로그 핀 A0 및 A1에 대해 각각 조이스틱 모듈의 X 및 Y 축을 정의했습니다.
#define joyX A0 #define joyY A1
이제 아래 코드에서 Joystick 모듈의 Switch (푸시 버튼)에 대해 Arduino의 PIN 2를 초기화하고 있으며 buttonstate 및 buttonstate1 의 값은 시작시 0이됩니다.
int button = 2; int buttonState = 0; int buttonState1 = 0;
아래 코드에서는 전송 속도를 9600으로 설정하고 핀 7을 출력 핀으로, 버튼 핀을 입력 핀으로 정의했습니다. 처음에는 스위치를 누를 때까지 버튼 핀이 높게 유지됩니다.
void setup () {pinMode (7, OUTPUT); pinMode (button, INPUT); digitalWrite (버튼, HIGH); Serial.begin (9600); }
이 코드 에서는 아날로그 핀 A0 및 A1의 값을 읽고 직렬로 인쇄합니다.
int xValue = analogRead (joyX); int yValue = analogRead (joyY); Serial.print (xValue); Serial.print ("\ t"); Serial.println (yValue);
조이스틱 샤프트 의 움직임에 따라 LED 를 켜고 끄는 조건 은 아래 코드에 정의되어 있습니다. 여기서 우리는 Arduino의 핀 A0과 A1에서 전압의 아날로그 값을 취하고 있습니다. 이 아날로그 값은 조이스틱을 움직이면 변하고 LED는 조이스틱의 움직임에 따라 빛납니다.
이 조건은 조이스틱 축이 -Y 축 방향으로 이동 하기위한 것 입니다.
if (xValue> = 0 && yValue <= 10) {digitalWrite (10, HIGH); } else {digitalWrite (10, LOW);}
이 조건은 조이스틱 샤프트가 -X 축 방향으로 이동 하기위한 것 입니다.
if (xValue <= 10 && yValue> = 500) {digitalWrite (11, HIGH); } else {digitalWrite (11, LOW);}
이 조건은 조이스틱 축이 + X 축 방향으로 이동 하기위한 것 입니다.
if (xValue> = 1020 && yValue> = 500) {digitalWrite (9, HIGH); } else {digitalWrite (9, LOW);}
이 조건은 조이스틱 샤프트가 + Y 축 방향으로 이동하기위한 것 입니다.
if (xValue> = 500 && yValue> = 1020) {digitalWrite (8, HIGH); } else {digitalWrite (8, LOW);}
조이스틱 샤프트를 대각선으로 움직일 때 X와 Y의 아날로그 값이 각각 1023과 1023이 될 때 한 위치가 오면 핀 9와 핀 8 LED가 모두 빛납니다. LED의 상태를 만족하기 때문입니다. 따라서 불일치를 제거하기 위해 (X, Y) 값이 (1023, 1023)이면 두 LED가 모두 꺼진 상태로 유지된다는 조건을 지정했습니다.
if (xValue> = 1020 && yValue> = 1020) {digitalWrite (9, LOW); digitalWrite (8, LOW); }
아래 조건은 푸시 버튼 스위치에 연결된 LED 를 작동하는데 사용됩니다. 조이스틱 스위치를 누르면 LED가 켜지고 버튼이 해제 될 때까지 잠 깁니다. 조이스틱 모듈의 푸시 버튼 스위치를 사용하는 것은 선택 사항입니다.
if (buttonState == LOW) {Serial.println ("Switch = High"); digitalWrite (7, HIGH); } else {digitalWrite (7, LOW);}
Arduino와 함께 조이스틱을 사용하여 LED 제어
Arduino에 코드를 업로드하고 회로도에 따라 구성 요소를 연결 한 후 이제 Joystick으로 LED를 제어 할 수 있습니다. 조이스틱 샤프트 움직임에 따라 각 방향으로 4 개의 LED를 켤 수 있습니다. 조이스틱 내부에는 두 개의 전위차계가 있는데, 하나는 X 축 이동용이고 다른 하나는 Y 축 이동용입니다. 각 전위차계는 Arduino에서 5v를 얻습니다. 따라서 조이스틱을 움직이면 전압 값이 변경되고 아날로그 핀 A0 및 A1의 아날로그 값도 변경됩니다.
따라서 Arduino에서 X 및 Y 축의 아날로그 값을 읽고 조이스틱의 축 이동에 따라 LED를 켭니다. 조이스틱 모듈의 푸시 버튼 스위치는 아래 비디오와 같이 회로의 단일 LED를 제어하는 데 사용됩니다.