Arduino/Joy Stick
JoyStick과 아두이노의 기본적인 연결과 값 읽기
DesignatedRoom
2020. 11. 9. 17:48
아두이노와 조이스틱의 연결
연결에는 어려운 것이 없다.
조이스틱의 VRX핀은 아두이노의 A0핀에 연결
조이스틱의 VRY핀은 아두이노의 A1핀에 연결
조이스틱의 SW(버튼)핀은 아두이노의 D8번핀에 연결
나머지는 VCC와 GND이다.
프로그래밍을 할 내용은 조이스틱의 x값(수평 값)의 변화가 일어나면 그 때의 정보를 출력해보자.
조이스틱의 x값과 y값은 0~1023의 값을 갖는다.
이 프로그래밍에서 생각해야할 것은 조이스틱은 민감하기 때문에
시리얼 모니터로 analogRead(A0)의 값을 확인하면 조이스틱을 움직이지도 않았는데 그 값이 매우 민감하게 변한다.
그렇기 때문에 값의 범위를 지정해서 특정한 값 범위를 중심으로 움직임을 판단하자.
그리고 현재의 조이스틱의 x값과 그 이전의 값을 저장하고 있어야 한다.
소스 코드
더보기
int x,y; // 현재의 조이스틱의 x,y값
bool btn; // 조이스틱의 버튼으로 현재의 버튼 상태
int prev_x, prev_y; // 그 이전의 조이스틱의 x,y값
bool prev_btn; // 조이스틱의 버튼으로 이전의 버튼 상태
const int offSet = 100; // 조이스틱 x의 값의 범위
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(8,INPUT_PULLUP); // 버튼은 풀업 저항으로 설정
// x와 prev_x를 초기화
x = analogRead(A0);
prev_x = x;
}
void loop() {
// put your main code here, to run repeatedly:
x = analogRead(A0);
y = analogRead(A1);
btn = digitalRead(8);
// 조이스틱이 x범위로 움직였다면
if (x > (prev_x + offSet) || x < (prev_x - offSet))
{
Serial.println(
String("x = ") +x +" ," + String("y = ") +y + " ," + String("btn = ") + btn
);
}
prev_x = x; // 현재의 x값을 이전의 x값으로 저장
prev_y = y; // 현재의 y값을 이전의 y값으로 저장
delay(100);
}