【 레오나르도활용#5】 조이스틱 마우스 만들기! (Leonardo)
아두이노 레오나르도(Leonardo)에 조이스틱을 이용하여 PC 마우스를 만들어 보자~!
아두이노.cc 에서 제공되는 마우스관련 함수를 이용하면 어렵지 않게 간단히 구현 할 수 있다.
Let's get it~!
▶ 선수 학습 :
1. [레오나르도 활용#1] 레오나르도 보드 사용법(보드 스팩& 설치-연결 참조) ☜ (클릭)
2. [레오나르도 활용#3] 어두워지면 PC화면 잠그기 (레오나르도 보드& 단축키사용 참조) ☜ (클릭)
3. [레오나르도 활용#3] 어두워지면 PC강제 종료시키기(셧다운 명령 & 윈도우 단축키사용 참조) ☜ (클릭)
▶ 실습 목표 :
1. [ 키보드 키 값 제어 함수에 대해 이해할 수 있다. ]
2. [ 레오나르도 보드를 이용해 PC를 제어(종료)할 수 있다. ]
3. [ 레오나르도 보드와 Joystick 모듈을 이용해 PC 마우스를 만들어 볼 수 있다. ]
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 프로그램 코드 및 설명 1 :
/* 아두이노 조이스틱 마우스 만들기 */
#include <Mouse.h>
const int LEFT_BT=4; //마우스 좌버튼
const int MIDDLE_BT=3; //마우스 가운데 버튼
const int RIGHT_BT=2; //마우스 우버튼
const int X_AXIS =0; //마우스 X 축 (A0)
const int Y_AXIS =1; //마우스 Y 축 (A1)
void setup ( ) {
Mouse.begin(); // 마우스 컨트롤 관련 함수 선언
pinMode(LEFT_BT, INPUT);
pinMode(MIDDLE_BT, INPUT);
pinMode(RIGHT_BT, INPUT);
}
void loop ( ) {
int xVal=readJoystick(X_AXIS); //x축값 읽어 저장
int yVal=readJoystick(Y_AXIS); //Y축값 읽어 저장
Mouse.move(-xVal, yVal, 0); //해당 좌표로 마우스 이동
// '-' 부호를 통해 상하좌우 위치 반대로 조정 가능
readButton(LEFT_BT, MOUSE_LEFT); //좌측 버튼
readButton(MIDDLE_BT, MOUSE_MIDDLE); //가운데 휠 버튼
readButton(RIGHT_BT, MOUSE_RIGHT); //우측 버튼
delay(5);
}
int readJoystick(int axis) {
int val=analogRead(axis);
val=map(val, 0, 1023, -4, 4); //입력값 맵핑(미세조정 :-3,-3 ~ -10, 10)
if(val <=2 && val >= -2) // 미세한 이동 값은 반영 되지 않도록 함
return 0;
else
return val; //맵핑된 값 전달
}
// 버튼 누름 판별하여 마우스 클릭 처리 (함수)
void readButton(int pin, char mouseCommand) {
// 버튼을 눌렀을 때,
if(digitalRead(pin)==HIGH) {
if(!Mouse.isPressed(mouseCommand)) { //클릭상태가 아니라면,
Mouse.press(mouseCommand); // 클릭 처리
}
}
else { // 이미 클릭 되어 있던 상태라면
if(Mouse.isPressed(mouseCommand)) {
Mouse.release(mouseCommand); //릴리즈(누르지 않음)처리
}
}
}
※ Arduino 제공 레퍼런스 참조 (마우스 관련 함수 등)
https://www.arduino.cc/reference/en/language/functions/usb/mouse/
Functions
Mouse.begin()
Mouse.click()
Mouse.end()
Mouse.move()
Mouse.press()
Mouse.release()
Mouse.isPressed()
▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)
▶ 영상강좌 :
(유튜브로 보기)
(전체화면 보기로 보세요)
'아두이노 > 5. 아두이노-프렌즈' 카테고리의 다른 글
【 아두이노ProMini#2】 초소형 블루투스 리모컨 만들기! ( Arduino Pro Mini) (0) | 2019.07.01 |
---|---|
【 아두이노ProMini#1】 아두이노 프로미니 사용하기~! ( Arduino Pro Mini) (0) | 2019.06.27 |
【 레오나르도활용#4】밤이되면 PC 강제 종료 시키기! (Leonardo) (0) | 2019.06.11 |
【 레오나르도활용#3】어두워 지면 PC 화면 잠그기 (Leonardo) (3) | 2019.06.10 |
【 Leonardo #3】 Visualize Temperature& Brightness Data on your PC with Leonardo (0) | 2019.05.28 |