사진게시판
malheur 님의 글을 읽어보고 커스텀은 커녕 납땜도 제대로 해본적 없는 저도 아두이노로 만들어봤습니다.
저는 디지털 단자가 많이 필요해서 아두이노 Mega ADK 모델을 사용했습니다.
제가 필요한 키캡이 한글투과 LED 키캡이었는데, 한글투과 키캡은 스카이디지털 N키보드 밖에 없더군요.
보시다시피 이 키캡배열이 일반 멤브레인 배열이라서 치수가 다른 키캡은 일일이 자로 실측 했습니다;;;
도면 그리고 아크릴 주문하기전에 프린터로 실제크기로 인쇄해서 거기 구멍내서 끼워 보기도 하고 ㅎㅎ
아크릴 주문하고 보니 다행히 사이즈가 잘 맞았습니다.
대략적인 키맵은 생각해놓고 있었는데, 종이에 색연필로 색칠하면서 납땜했습니다.
스위치 +극만 일단 납땜한 모습입니다.
앞에서 N-keyboard 키캡을 사용했다고 했는데 완성하고 보니 이 키캡이 제가 한 방향(LED가 아래로)과 반대로 스위치에 끼웠을 때(LED가 위로) 더 밝아서 다 분리하고 스위치를 거꾸로 끼우고 다시 납땜했습니다;;;
저는 전선으로 얇은 태프론 래핑와이어를 사용했습니다. 은근히 철사가 구하기 어려워서 인두기로 태프론을 녹여서 벗기고 그걸로 그라운드를 묶었습니다. 일단 이 상태에서 키보드가 제대로 작동하는지 확인하고 LED를 납땜을 시작했습니다.
LED를 끼우고 디지털단자와 연결하기전 LED 수명을 위해 LED를 300옴짜리 저항과 연결했습니다.
마지막으로 LED 색상변환캡을 끼우고 마무리했습니다.
아두이노 Mega의 경우 원래 HID를 지원하지 않아서 펌웨어 업로드를 통해 문제를 해결했습니다.
펌웨어는 레오나르도처럼 키보드 라이브러리 함수를 쓸 수 있게 하고 HID로 인식하게 도와줍니다.
그래서 키보드를 위한 소스코드 외에도 HID를 위한 소스코드가 추가적으로 들어가는데요.
그래서 그런지 키가 잘 씹힙니다. 10번 누르면 5번은 씹히네요.
독수리타법으로 천천히 누르면 인식되긴 합니다만 실사용으론 도저히 불가능 합니다.
그래도 HID 펌웨어 업로드에 관해서 알고 싶으신 분이 있으시면 추가적으로 작성하겠습니다.
커스텀도 처음이고 아두이노도 처음인데 만드는동안 정말 재밌게 만들었습니다.
다음엔 레오나르도로 만들어야겠습니다.
아우...정말 대단하십니다...저 와이어링...!!!
전 기초가 부족하여 와이어링은 손대지 않고 있습니다...ㅎㅎㅎ
오오 잘 봤습니다!
저항방식으로 만드셨네요! 코딩에 따라 키는 씹힐 수도 있고 다른 키가 눌릴 수도 있습니다.
우선 키가 씹히는 경우에는 코딩이 너무 복잡하게 되어 코드 전체 한 바퀴의 루프 속도가 너무 늦은 경우에 그렇게 될 수 있습니다. millis()라는 함수를 이용해서 루프 한 바퀴에 걸리는 시간을 확인해볼 수 있는데요...
double a;
a = millis();
// 코드 전체
Serial.println(millis() - a);
로 해서 분당 타이핑 400타 정도 기준 100ms이 넘어가면 키가 씹히기 시작합니다.
그러면 최대한 속도를 빠르게 해야되는데요... 아두이노 레오나르도에서 analogRead만 100회 반복해서 millis를 재어보거나 keyboard.Press만 반복해서 제어본 결과 아날로그 리드는 딜레이가 거의 없다시피 하지만 의외로 키보드 함수가 비교적 느리더라구요. 그래서 코드 앞쪽에 먼저 모든 핀 아날로그리드만 쭉 해서 값이 낮은 경우(어떤 키라도 눌린 경우) 상세하게 키를 확인하고, 값이 높은 경우(아무 키도 안눌린 경우) 연속 2회 까지는 keyboard.Release를 하지만 3회 이상 연속으로 뜨는 경우는 아얘 해당 핀 전체를 스킵해버리는 식으로 코딩을 해서 아무 키가 안눌린 핀에서는 keyboard.Release를 생략할 수 있게 해버리면 루프 속도가 훨씬 빨라지게 됩니다. 이거는 어느 함수가 시간을 잡아먹는지가 사용하신 보드와 다를 수도 있으니 한번 테스트 해보시고 이런식으로 코드를 간추리시면 속도향상이 될 것 같습니다.
두번째로, 안누른 키가 눌리는 문제가 생길 수도 있는데요, 이 부분도 해결 방법이 있는데 지금 그 문제가 있으신지 아닌지 모르겠어서 우선은 속도 개선을 먼저 하시고 그 뒤에 보시면 될 것 같습니다.
진정한 커스텀이군요.
아두이노 보드의 다양한 사용성이 느껴집니다.ㅎ