반응형

【 레오나르도활용#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()

 

▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)

03_MouseControl.zip
0.00MB

▶ 영상강좌 :  

(유튜브로 보기)

https://youtu.be/jBXkvg5PBpg

 

(전체화면 보기로 보세요)

 

 

반응형