신기하게도 요청이 있어 3년 전에 작성한 포스팅 뒤져가며 써보는 미립자팁 게시글입니다.
일단 아두이노는 가격도 싸고 간단히 스위치 input, output 하기도 편한데다 워낙 예제 코드가 많고 간단해서
혼자 가지고 놀 장난감 만들기로는 제격이라 아두이노를 선택했었습니다.
저는 아두이노 프로 마이크로를 선택했는데, 많은 버튼을 사용하시지 않는다면 비틀을, 1개만 사용하신다면 digispark
호환 보드 하나에 1천원짜리 알리에서 구입해 보시는거도 좋습니다.
아두이노 프로 마이크로에는 atmega32u4라는 avr이 들어갑니다. 레오나르도에도 들어가는 avr이죠.
기본적으로 HID를 지원해서 별다른 코딩 필요없이 keyboard.press, keyboard.release 함수 두 개만으로 작성한 코드를 통해
어디든 연결해서 키보드처럼 사용할 수 있다는게 장점입니다.
보드를 선택하셨다면, 케이스를 짜고 스위치를 선택하셔야 합니다.
저 같은 경우는 아크릴 업체에 의뢰하여 제작했습니다.
만약 풀 사이즈 키보드 제작에 관심이 있으시다면 kbdmania의 고수분들 게시글을 보시면 도움이 되겠습니다.
저렇게 조잡하게나마 도면을 제작하여 업체에 보내드리면 한 5천원? 정도로 제작해서 보내주십니다.
구멍 크기는 가로 세로 13.9 mm 이고 상판 두께는 5mm입니다.
이제 납땜과 코딩을 해주어야 합니다. 납땜은 정말 쉽습니다. 그냥 gnd는 스위치의 - 핀과 전부 연결해주고,
디지털 핀마다 + 핀을 각각 연결해주면 됩니다.
저렇게 - 극은 전부 연결해주었습니다.
이것저것 내용이 많은데 다 재쳐두고 GND와 파란색 번호만 보시면 됩니다. 기판 상에 하얀색으로 적힌 번호가
코드상에서 표현해줄 핀 번호입니다.
이제 코드를 업로드 해주어야 합니다.
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 |
#include <Keyboard.h>
typedef struct{ byte Pin; byte Key; boolean Press; } BUTTON;
void ButtonRead(BUTTON* Btn){ int State = digitalRead(Btn->Pin); if(State == HIGH && State != Btn->Press){ Btn->Press = State; Keyboard.release(Btn->Key); }else if(State == LOW && State != Btn->Press){ Btn->Press = State; Keyboard.press(Btn->Key); } }
BUTTON Btn1 ={7,100,false}; // D BUTTON Btn2 ={6,102,false}; // F BUTTON Btn3 ={A3,106,false}; // J BUTTON Btn4 ={A2,107,false}; // K BUTTON Btn5 ={A1,108,false}; // L
void setup() { pinMode (Btn1.Pin,INPUT_PULLUP); pinMode (Btn2.Pin,INPUT_PULLUP); pinMode (Btn3.Pin,INPUT_PULLUP); pinMode (Btn4.Pin,INPUT_PULLUP); pinMode (Btn5.Pin,INPUT_PULLUP); Keyboard.begin(); }
void loop() { ButtonRead(&Btn1); ButtonRead(&Btn2); ButtonRead(&Btn3); ButtonRead(&Btn4); ButtonRead(&Btn5); delay(1); } |
cs |
저기서 눈여겨 보셔야 할 것은 1ms 정도 delay를 준 것입니다.
저렇게 delay 를 주지 않으면 일반 키보드와 달리 입력시 aaaaaaaaa 하고 연속해서 입력이 됩니다.
delay를 줘야 꾹 누르고 있을 때 a 하고 1초 있다가 aaaaa하고 연속 입력이 되는것이죠.
특히 리듬게임을 할 때 중복입력은 치명적이므로 꼭 넣어주세요.
아스키 코드값으로 키를 정해주고, 풀업저항을 설정하였습니다.
혹시 아두이노 프로 마이크로를 사용하시려 한다면 기판이 몇 V인지 꼭 살펴보셔야 합니다.
잘못된 볼트를 설정하고 업로드를 하게 되면 보드를 초기화 시켜주어야 하며, 초기화 방법도 굉장히 귀찮기 때문이죠.
고딩 때 야자째고 만든거라 지금보니 상당히 아쉬운 부분이 많네요. 조만간 3D 프린터로 케이스 만들고 led까지
추가해서 다시 만들어보고 싶네요 ㅋㅋ
.h>
소형키보드가 필요한데 (공사 현장에 자주가다보니), 나중에 한번 만들어보고 싶네요. >0<)/