본문 바로가기
하드웨어/아두이노

[아두이노] 아두이노 레오나르도 시리얼 키보드 만들기

by 만들오 2022. 4. 20.

안녕하세요? 만들오 입니다.

 

아두이노 레오나르도를 이용해 시리얼 입력을 키보드/마우스 입력으로 변환해주는 장치를 만드는 방법을 소개합니다.


1. 아두이노 보드 준비

아두이노는 종류가 많습니다. 그 중 HID 기능을 지원하는 아두이노 레오나르도를 구매해야 합니다.

초록색으로 표시한 보드는 모두 사용이 가능하며, 가장 저렴한 것으로 구매하는것이 좋겠습니다.

아두이노와 컴퓨터를 연결할 케이블은 데이터 통신이 가능한 케이블이어야 합니다.


2. 스케치 업로드하기 (클라우드 버전)
 

다음 스케치를 복사해 둡니다.

#include <AbsMouse.h>
#include "Keyboard.h"

void setup() {
  Serial.setTimeout(100);
  Serial.begin(9600);
  Keyboard.begin();
  AbsMouse.init(1920, 1080);
}

void loop() {
  if (Serial.available() > 0) {
    String msg = Serial.readString();
    int mouse_symbol = msg.indexOf(",");
    //Serial.println(msg);
    if (mouse_symbol >= 0){
      //123,456
      int comma = msg.indexOf(",");
      String mx_ = msg.substring(0, comma);
      String my_ = msg.substring(comma+1, msg.length());
      int mx = mx_.toInt();
      int my = my_.toInt();
      AbsMouse.move(mx, my);
      AbsMouse.press(MOUSE_LEFT);
      AbsMouse.release(MOUSE_LEFT);
    }
    else if (msg == "f1" || msg == "F1") Keyboard.write(KEY_F1);
    else if (msg == "f2" || msg == "F2") Keyboard.write(KEY_F2);
    else if (msg == "f3" || msg == "F3") Keyboard.write(KEY_F3);
    else if (msg == "f4" || msg == "F4") Keyboard.write(KEY_F4);
    else if (msg == "f5" || msg == "F5") Keyboard.write(KEY_F5);
    else if (msg == "f6" || msg == "F6") Keyboard.write(KEY_F6);
    else if (msg == "f7" || msg == "F7") Keyboard.write(KEY_F7);
    else if (msg == "f8" || msg == "F8") Keyboard.write(KEY_F8);
    else if (msg == "f9" || msg == "F9") Keyboard.write(KEY_F9);
    else if (msg == "f10" || msg == "F10") Keyboard.write(KEY_F10);
    else if (msg == "f11" || msg == "F11") Keyboard.write(KEY_F11);
    else if (msg == "f12" || msg == "F12") Keyboard.write(KEY_F12);
    else if (msg == "ctrl" || msg == "CTRL") Keyboard.write(KEY_LEFT_CTRL);
    else if (msg == "alt" || msg == "ALT") Keyboard.write(KEY_LEFT_ALT);
    else if (msg == "esc" || msg == "ESC") Keyboard.write(KEY_ESC);
    else if (msg == "tab" || msg == "TAB") Keyboard.write(KEY_TAB);
    else if (msg == "space") Keyboard.write(32);
    else Keyboard.print(msg);
  }
}

이후 절차는 영상을 참고해 주세요.

https://youtu.be/t_BREgO8XmM

 

- YouTube

 

www.youtube.com


 

3. 기타

시리얼 연결은 baudrate 9600 기준입니다.

F1~F12까지의 특수키와 CTRL, ALT, TAB, ESC키를 입력할 수 있고, 이 외의 문제는 모두 키입력으로 처리합니다.

300,400 과 같이 쉼표로 구분한 좌표를 보내면 마우스로 입력하게 됩니다.

[끝]

728x90

댓글