조이스틱 모듈(KY-023)
![](/html/images/2/21/%EC%A1%B0%EC%9D%B4%EC%8A%A4%ED%8B%B1%EB%8C%80%ED%91%9C%EC%9D%B4%EB%AF%B8%EC%A7%80.jpg)
저항의 변화에 따라 x, y축 값이 변하며 가운데 버튼을 누르면 스위치 역할을 하는 모듈입니다.
이동 동작이 필요한 RC카, 드론 등에 주로 활용됩니다.
사양
- 작동 전압 : 3.3V ~ 5V
- x축, y축 아날로그 출력
- z축 스위치 디지털 출력(풀업 저항 X)
예제 사용 하드웨어
연결
아두이노 나노 | LCD | 조이스틱모듈 |
5V | VCC | 5V |
GND | GND | GND |
A1 | VRx | |
A0 | VRy | |
D2 | SW | |
A4 | SDA | |
A5 | SCL |
![](/html/images/f/f1/%EC%A1%B0%EC%9D%B4%EC%8A%A4%ED%8B%B1_%ED%9A%8C%EB%A1%9C.png)
예제 코드
조이스틱 좌표 및 스위치 상태를 LCD에 표시하는 예제입니다.
LCD 사용방법은 링크를 참고해주세요.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
const int xAxis = A1;
const int yAxis = A0;
const int zSwitch = 2;
void setup() {
pinMode(zSwitch, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("X:");
lcd.setCursor(8, 0);
lcd.print("Y:");
lcd.setCursor(0, 1);
lcd.print("Z : ");
}
void loop() {
for (int i = 2; i < 6; i++) {
lcd.setCursor(i, 0);
lcd.print(" ");
}
lcd.setCursor(2, 0);
lcd.print(analogRead(xAxis));
for (int i = 10; i < 14; i++) {
lcd.setCursor(i, 0);
lcd.print(" ");
}
lcd.setCursor(10, 0);
lcd.print(analogRead(yAxis));
lcd.setCursor(4, 1);
lcd.print(digitalRead(zSwitch));
delay(100);
}
실행 결과