안녕하세요. 소심비형입니다. NGM 3.0을 하드웨어 방식으로 사용할 수 있는 시리얼 통신 기능에 대해 알아보도록 하겠습니다. 우선, 아두이노 레오나르도를 하나 구매해야겠죠? 또는 가상 아두이노를 다운로드 받아서 설치 후 연습해봐도 됩니다.
인터넷에 검색해보면 아두이노 레오나르도를 최저가에 구매할 수 있을겁니다. 대략 6,000원 선인거 같네요. 아무튼, 다른 제품이 아닌 레오나르도로 구입해야 합니다. 이유는, 레오나르도만 마우스, 키보드 모듈이 기본 장착되어 있기 때문입니다. 다른 제품은 직접 설치해야 하는데요. 아두이노는 메모리가 작아서 관리가 어렵고 복잡한 내용을 작성하기에는 어려움이 많기 때문입니다.
총알 배송으로 받은 아두이노 레오나르도를 컴퓨터에 연결합니다. 그러면, 아래 그림과 같은 프로그램이 실행되고 시리얼 포트도 자동으로 추가됩니다.
NGM과 연동하기 위한 코드를 작성해야 합니다. 아래처럼요.
코드는 정말 단순해서 NGM에서 제공하는 인터페이스만 맞으면 정상 동작하게 됩니다. 전체 코드는 아래에 있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
void setup() { Serial.begin(9600); } if (cmd != "") { String m = cmd.substring(0, 1); if (m == "X") { int p = cmd.substring(1).toInt(); Mouse.move(p, 0); } else if (m == "Y") { int p = cmd.substring(1).toInt(); Mouse.move(0, p); } else if (m == "V" || m == "H") { Mouse.move(0, 0, p); else if (m == "K") { String v = cmd.substring(2); if (v == "LeftShiftKey") { keyAction(c, KEY_LEFT_SHIFT); } else if (v == "RightShiftKey") { keyAction(c, KEY_RIGHT_SHIFT); } else if (v == "LeftControlKey") { keyAction(c, KEY_LEFT_CTRL); } else if (v == "RightControlKey") { keyAction(c, KEY_RIGHT_CTRL); } else if (v == "LeftAltKey") { keyAction(c, KEY_LEFT_ALT); } else if (v == "RightAltKey") { keyAction(c, KEY_RIGHT_ALT); } else if (v == "LeftArrow") { keyAction(c, KEY_LEFT_ARROW); } else if (v == "UpArrow") { keyAction(c, KEY_UP_ARROW); } else if (v == "RightArrow") { keyAction(c, KEY_RIGHT_ARROW); } else if (v == "DownArrow") { keyAction(c, KEY_DOWN_ARROW); } else if (v == "Backspace") { keyAction(c, KEY_BACKSPACE); } else if (v == "Tab") { keyAction(c, KEY_TAB); else if (v == "Enter") { keyAction(c, KEY_RETURN); } else if (v == "CapsLock") { keyAction(c, KEY_CAPS_LOCK); } else if (v == "F1") { keyAction(c, KEY_F1); } else if (v == "F2") { keyAction(c, KEY_F2); } else if (v == "F3") { keyAction(c, KEY_F3); } else if (v == "F4") { keyAction(c, KEY_F4); } else if (v == "F5") { keyAction(c, KEY_F5); } else if (v == "F6") { keyAction(c, KEY_F6); } else if (v == "F7") { keyAction(c, KEY_F7); } else if (v == "F8") { keyAction(c, KEY_F8); } else if (v == "F9") { keyAction(c, KEY_F9); } else if (v == "F10") { keyAction(c, KEY_F10); } else if (v == "F11") { keyAction(c, KEY_F11); } else if (v == "F12") { keyAction(c, KEY_F12); } else { if (c == "KD") { Keyboard.press(v[0]); } else if (c == "KU") { Keyboard.release(v[0]); } } int c = cmd.toInt(); } } void keyAction(String c, uint8_t k) { if (c == "KD") { Keyboard.press(k); Keyboard.release(k); } } |
cs |
위 코드를 아두이노에 붙여넣기 한 후 업로드 버튼을 클릭하세요. 간략하게 코드에 대해 설명하지만, NGM에서 시리얼로 변환해주는 인터페이스들을 스케치로 코드화한 내용입니다.
스케치가 컴파일중입니다.
컴파일된 코드가 아두이노로 업로드 되었습니다.
이제 NGM을 실행한 후 아래 동영상처럼 설정합니다.
위 영상을 보면 아시겠지만, 하드웨어적으로 입력되는건 기존 매크로처럼 마우스가 순간 이동되지 않습니다. 물론, 비활성 매크로도 안됩니다. 따라서, 마우스의 최대 속도인 127만큼만 이동이 되며, 거리를 자동으로 계산하여 이동시켜줍니다.
개발자에게 후원하기
추천, 구독, 홍보 꼭~ 부탁드립니다.
여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~
감사합니다~
'매크로' 카테고리의 다른 글
NGM 3.0 웹 액션. (텍스트 입력 - 페이스북 자동 로그인 만들기 2회) (0) | 2019.06.11 |
---|---|
NGM 3.0 웹 액션. (버튼 클릭 - 페이스북 자동 로그인 만들기 마지막회) (0) | 2019.06.11 |
NGM Sponsor (0) | 2018.10.29 |
NGM 3.0 무료 매크로 만들기 (0) | 2018.10.28 |
매크로 만들기 (0) | 2018.10.28 |
댓글