만들어보면서 느낀점을 정리해보는 글

 

더보기

1. 아두이노라고 모두 같은게 아님

아예 베이스가 없는 상태에서 만져본거라 나만 실수한 걸 수도 있는데 아두이노 나노랑 프로랑 용도가 다름.

C타입 usb 달린게 나노 밖에 없어서 나노로 샀는데 이건 독립적으로 구동되는 장치에 쓰이는 아두이노였음

키보드같이 컴터에 꽂아서 USB 장치로 쓸거면 레오나르도 보드에서 갈라져 나온 프로, 비틀 이런애들을 써야함.

그리고 아두이노 프로 마이크로랑 아두이노 비틀 중에 어느걸 골라 쓸건지는 크기랑 핀 수를 보고 고르면 됨.

필요한 핀 수는 키보드 매트릭스(전자 회로 부분)를 어떻게 짤지 먼저 생각하고 선택.

 

 

2. CAD는 무료 프로그램 써도 무방함

온라인 캐드나 온라인 뷰어로 작업은 불가능한데 설치해서 쓰는 무료 캐드 프로그램은 생각보다 쓸만 함

대학생이라면 무료 학생계정 쓰면 되지만 여건상 안된다면 NanoCad 같은거 써서 작업해도 무방.

 

주의할건 아크릴 재단 맡길 곳에서 특정 버전의 캐드 파일을 요구하는 경우가 있으므로

내보내기 할때 옵션에서 잘 선택해서 뽑아줄 것.

 

처음에는 Sketch Up 체험판 (30일)으로 설계했고 DWG 파일 뽑아서 아크릴 재단 맡겼었는데

스케치업에서 그린 곡선은 제대로 된 곡선이 아니라서 도면도 엄청 무거워지고

레이저 가공하면 gcode가 점마다 찔끔찔끔 멈춰서 가공시간도 길어지고 톱니처럼 잘림

심하면 아예 빠꾸먹으므로 무조건 곡선은 캐드로 작업해서 뽑아야 함. 

 

 

3. 설계할 때 무조건 실측치로 만들어야 함

기본적인 상식일 수도 있는데 부품 제원이랑 실제 수치랑 다른 경우가 가끔 있음

제조사가 제원을 잘못 기재한걸 수도 있고 판매자나 내가 데이터 시트를 엉뚱한걸 보는 경우도 있음.

 

키보드 스위치 제원은 13.9 * 13.9mm인데 이대로 스위치 홀을 설계할경우 유격이 생각보다 크다고 함

나 같은 경우 가로 13.9 세로 13.85 사이즈로 설계했고, 스위치 걸쇠 부분이 눌려 들어가면서 딱 맞는 크기였음.

(물론 그래도 비키 스타일은 스위치가 빠지면 망가질 수 있으므로 글루건으로 붙여주는게 좋음)

 

스위치 쪽은 유격이 있으면 만들때나 실제 사용할때나 짜증날 수 밖에 없는 부분이므로 실측해서 만들어야 하고

아두이노 공간이나 usb 포트 크기, 이런 부분들도 되도록 실물 측정으로 만들 것.

 

 

4. 아크릴 재단 맡길때 오프셋은 업체에 미리 확인하고 맡길 것

3D 프린터로 뽑아 쓰는게 아니고 업체에 아크릴 하우징을 맡기는 경우 레이저 가공 혹은 CNC 가공을 선택하는데

레이저가공은 0.5mm정도, CNC는 0.2mm정도의 추가 절삭면이 발생할 수 있음.

 

오차만 놓고 보면 당연히 CNC로 맡겨야 하는거 아니야? 라고 생각할 수 있지만

CNC 특성상 가공비가 엄청 비싸고 모서리가 날카로워서 보통은 레이저 가공으로 하우징을 만들게 됨.

 

문제는 설계할 때 이 절삭 단차를 포함해서 설계해야 하는 업체가 있고, 포함하면 안되는 업체가 있음

자작 키보드 하우징쪽에서 입소문으로 유명한 하나 아크릴의 경우 이런 단차를 약간은 고려해서 설계해야함

이런 단차나 가공비는 업체마다 엄청 다르므로 가능하면 여기저기 물어보고 다닐 것.

 

 

5. 키보드 매트릭스 설계

거의 유일한 전자회로 부분인데 크게 저항 매트릭스 / 다이오드 매트릭스로 나늬고, 보통은 두가지를 섞어 씀.

저항식은 전압 강하를 이용해 키를 스캔해오는 방식인데 필요한 핀 수가 적은대신 동시 입력이 안되고

다이오드는 회로가 도통됏는지 안됏는지로 키를 스캔하는 방식으로 필요한 핀 수는 많지만 동시 입력이 가능함.

 

예를 들어 6키 키패드를 만든다면 저항식 매트릭스로 아날로그핀 + 디지털 핀 총 2개 핀으로 만들 수도 있고,

다이오드 매트릭스로 아날로그나 디지털핀 구분 없이 2핀 + 3핀 총 5개 핀으로 만들 수도 있음.

 

※ 이번에 만든 키패드의 경우 동시입력이 중요해서 다이오드 매트릭스로 제작했음.

 

 

6. 아두이노 프로 마이크로 핀 갯수

보통 아두이노 프로 마이크로 핀맵으로 검색하면 이렇게 나올텐데,
왠지는 몰라도 이 핀을 쓸 수 있는건지 쓰면 안되는건지 제대로 설명된 자료가 국내웹에는 찾기 힘든거같음.

결론만 말하자면 위에 그림에 하늘색으로 넘버링 된 핀은 모두 키보드 매트릭스에 사용 가능함.

TX RX는 PC통신에 쓰이는 핀이니 쓰지 말라는 말도 있는데 무시하고 그냥 쓰면 된다.

 

또 나중에 키보드를 만들면서 알게된거지만 위에 나온 핀 외에도 추가로 쓸 수 있는 핀이 2개가 더 있음.

바로 LED 핀. 저기에 붙은 다이오드를 인두기로 녹여 떼주면 키보드 매트릭스용 핀으로 쓸 수 있다.


7. QMK vs keyboard.h
능력이 된다면 무조건 QMK를 쓰는게 좋음.
아두이노의 부트로더나 키보드 라이브러리는 확장성을 염두에 두고 만들어서 그런지
코딩 자체에 문제가 없어도 연결 핀 수가 많아지면 채터링이나 딜레이가 발생함.

그 외에도 QMK에서 지원하는 기능들이 무궁무진하다보니 만지기도 훨씬 재밌음.

 

 

생각나는대로 추가해야지

'Hobby' 카테고리의 다른 글

커스텀 키보드 오소리 제작기  (2) 2021.10.07
근황  (0) 2021.09.12
아두이노 커스텀 키패드  (0) 2021.08.07
요즘 취미  (0) 2020.06.13
개인적으로 연구해서 적는 로아 기공사 스킬트리  (0) 2018.12.17

여름 휴가동안 뭘할까 하다가 아두이노를 만져보기로 했다.

첫번째 프로젝트는 제일 만만해보이는 커스텀 키패드.

커스텀 가능한 4x4 매트릭스에 ESC키, 키 팔레트를 스왑할 수 있는 Fn 키를 추가해서 디자인했다.

 

아래는 코드.

키 팔레트는 배열로 구성돼있고 팔레트 스왑용 Fn키는 토글로 작동한다.

A0~A3 핀에 순차적으로 인풋을 넣고 A4~A7을 스캔해서 키 입력을 출력한다.

아직은 테스트 전이므로 실제 작동하는지는 해봐야알듯

인풋쪽 전압이 올라가면 키가 입력되도록 코드를 짰는데,

인풋 중 하나에 전압이 가해지면 GND로 빠져나갈때까지 계속 키입력 신호가 들어가는걸로 보인다

일단 실패한 코드같아서 수정 필요.. 

 

더보기

#include <Keyboard.h>
//Key Set
const byte Pin_X[4] = {A0, A1, A2, A3};
const byte Pin_Y[4] = {A4, A5, A6, A7};
const int DT = 50;
int FN = 0;
uint8_t KeySet[2][4][4] =
{
  {
    {'1', '2', '3', '4'},
    {'q', 'w', 'e', 'r'},
    {'a', 's', 'd', 'f'},
    {'z', 'x', 'c', 'v'}
  },
  {
    {'a', 'b', 'c', 'd'},
    {'e', 'f', 'g', 'h'},
    {'i', 'j', 'k', 'l'},
    {'m', 'n', 'o', 'p'}
  }
};

void setup()
{
  Serial.begin(9600);
  Keyboard.begin();
  for (int Ix = 0 ; Ix < 4 ; Ix++ )
  {
    pinMode(Pin_X[Ix], OUTPUT);
  }
  for (int Iy = 0 ; Iy < 4 ; Iy++ )
  {
    pinMode(Pin_Y[Iy], INPUT);
  }
  pinMode(0, OUTPUT);
  pinMode(1, INPUT);
  pinMode(2, INPUT);
}

void loop()
{
  digitalWrite(0, HIGH);
  if (digitalRead(1, HIGH))  //ESC
  {
    Keyboard.press(KEY_ESC);
    delay(DT);
    Keyboard.releaseAll();
    delay(DT);
  }

  if (digitalRead(2, HIGH))  //FN
  {
    if (FN == 0) FN = 1;
    else FN = 0;
    delay(DT);
  }
  digitalWrite(0, LOW);

  for (int Kx = 0; Kx < 4; x++)  //Key Matrix
  {
    digitalWrite(Pin_X[Kx], HIGH);
    for (int Ky = 0; Ky < 4; y++)
    {
      if (digitalRead(Pin_Y[Ky]), HIGH)
      {
        Keyboard.press(KeySet[FN][Kx][Ky]);
        delay(DT);
        Keyboard.release(KeySet[FN][Kx][Ky]);
        delay(DT);
      }
      else
      {
        Keyboard.release(KeySet[FN][Kx][Ky]);
      }
    }
    digitalWrite(Pin_X[x], LOW);
  }
}

 

 

결국 새로 수정한 코드.

요건 잘된다!

 

더보기

#include <Keyboard.h>
//Key Set
const byte Pin_X[4] = {A0, A1, A2, A3};
const byte Pin_Y[4] = {4, 5, 6, 7};
const int DT = 100;
int FN = 0;
uint8_t KeySet[2][4][4] =
{
  {
    {'1', '1', '1', '1'},
    {'2', '2', '2', '2'},
    {'3', '3', '3', '3'},
    {'4', '4', '4', '4'}
  },
  {
    {'a', 'b', 'c', 'd'},
    {'e', 'f', 'g', 'h'},
    {'i', 'j', 'k', 'l'},
    {'m', 'n', 'o', 'p'}
  }
};

void setup()
{
  Serial.begin(9600);
  Keyboard.begin();
  for (int Ix = 0 ; Ix < 4 ; Ix++ )
  {
    pinMode(Pin_X[Ix], INPUT_PULLUP);
  }
  for (int Iy = 0 ; Iy < 4 ; Iy++ )
  {
    pinMode(Pin_Y[Iy], OUTPUT);
  }
  pinMode(10, OUTPUT);
  pinMode(8, INPUT_PULLUP);  //ESC
  pinMode(9, INPUT_PULLUP);  //FN
}

void loop()
{
  digitalWrite(10, LOW);
  if (digitalRead(8))  Keyboard.release(KEY_ESC);
  else
  {
    Keyboard.press(KEY_ESC);
    delay(DT);
  }
  if (digitalRead(9) == LOW)
  {
    if (FN == 1)  FN = 0;
    else  FN = 1;
    delay(DT);
  }
  digitalWrite(10, HIGH);
  
  for (int Kx = 0; Kx < 4; Kx++)  //Key Matrix
  {
    for (int Ky = 0; Ky < 4; Ky++)
    {
      digitalWrite(Pin_Y[Ky], LOW);
      if (digitalRead(Pin_X[Kx]))  Keyboard.release(KeySet[FN][Kx][Ky]);
      else
      {
        Keyboard.press(KeySet[FN][Kx][Ky]);
        delay(DT);
      }
      digitalWrite(Pin_Y[Ky], HIGH);
    }
  }
}

 

완성~🤗

'Hobby' 카테고리의 다른 글

근황  (0) 2021.09.12
아두이노 키보드 관련 이것저것  (0) 2021.08.17
요즘 취미  (0) 2020.06.13
개인적으로 연구해서 적는 로아 기공사 스킬트리  (0) 2018.12.17
로아 오픈베타 후기  (4) 2018.11.10

레고 미피 시즌20 한박스 사서 하루에 한개씩 까고있음;;

 

 


※ 최근 버프된 스킬들 관련 개인적인 생각 :

독마권 - 번천장이 딜, 무력화에서 여전히 더 좋음

벽력장 - 낙영장이 딜, 무력화에서 여전히 더 좋지만 잡몹용으로 꽤 좋아진거같음

여래신장 - 화려한이 잡몹용으로 꽤 좋아짐 근데 넴드에 쓰기 너무 안좋아서 계륵느낌

내공방출 - 기본 버프가 공격력이 아니라 피해감소 버프가 달려서 외면받지않았나 싶음






'Hobby' 카테고리의 다른 글

아두이노 커스텀 키패드  (0) 2021.08.07
요즘 취미  (0) 2020.06.13
로아 오픈베타 후기  (4) 2018.11.10
오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
딸기술 담그는 중  (5) 2017.02.18


그래픽 : ☆☆☆☆★(4/5) - 쿼터뷰의 장점을 극한으로 끌어올린 그래픽. 스마게는 레벨디자인팀에게 상줘야한다.

연출 : ☆☆☆☆★(4/5) - 촌극같은 스토리를 연출이 커버해준다. 다만 파티전투시 적과 아군 이펙트가 구분이 안되는 것은 감점 포인트.

최적화 : ☆☆★★★(2/5) - 맵은 불필요할정도로 크고 서버부담도 너무 크다. 최저사양을 거짓으로 적어둔 것이 가장 큰 감점 포인트.

스토리 : ☆☆★★★(2/5) - 다양한 소비자의 니즈를 맞추려다보니 잡다한 세계관이 조잡하게 섞였다. 반면 성우들의 열연이 매우 돋보인다.

전투 : ☆☆☆★★(3/5) - 육성과정 초중반이 다소 지루하다. 개발기간에 비해 보스패턴이 단순하고 이펙트에 가려 알아보기 힘들다.

시스템 : ☆☆☆★★(3/5) - 키 세팅이 자유롭지 않다는 것이 제일큰 단점이 아닐까. 개발진의 노고를 느낄 수 있는 뷰포인트는 상당히 좋았다.

기타 : ☆☆☆☆★(4/5) - 미니맵이 굉장히 상세하고 편리하다. 퀘스트 동선이 밀도있으면서 깔끔하게 잘짜여져 있다.


총점 : ☆☆☆★★(3/5)

 - 최근 출시된 온라인 게임중 보기 드문 완성도를 보여준다. 베타기간 이후 운영으로 말아먹지만 않는다면 최소 8년은 갈 게임. 

그렇다고 마냥 좋아할 것도 아닌게 오버워치와 히오스같은 똥겜들도 베타기간엔 갓겜이었단걸 잊지말자.




'Hobby' 카테고리의 다른 글

요즘 취미  (0) 2020.06.13
개인적으로 연구해서 적는 로아 기공사 스킬트리  (0) 2018.12.17
오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
딸기술 담그는 중  (5) 2017.02.18
무~바킨~~  (3) 2016.07.26



오랜만의 블로그 포스팅.

최근에 진행중인 프로젝트 작업량이 워낙 많아서 블로그고 뭐고 신경쓸겨를이 없었는데 어쩌다보니 예상치못한 휴식기간이 생겼다.



작업이 곧 취미인지라 할일없이 방황하던중

보뇨뇨(BNO03)가 같이 로스트아크를 해보자고 해서 손대보기로 했다.

물론 손댄다해도 그냥 같이 필드좀 돌아다녀보고 맵구경하다 끌꺼같긴한데;






스마일게이트 관계자분들 혹시라도 글의 내용이 맘에 안드신다면 비밀 댓글로 삭제요청 적어주시기바랍니다.

고소하실 필요없이 바로 삭제해드립니다.

'Hobby' 카테고리의 다른 글

개인적으로 연구해서 적는 로아 기공사 스킬트리  (0) 2018.12.17
로아 오픈베타 후기  (4) 2018.11.10
딸기술 담그는 중  (5) 2017.02.18
무~바킨~~  (3) 2016.07.26
무레이서~  (0) 2016.07.22

집앞 슈퍼에서 딸기를 싸게 팔길래 딸기술을 담구기로 했다.


'Hobby' 카테고리의 다른 글

로아 오픈베타 후기  (4) 2018.11.10
오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
무~바킨~~  (3) 2016.07.26
무레이서~  (0) 2016.07.22
Mumei  (2) 2016.07.22



뀽뀽


'Hobby' 카테고리의 다른 글

오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
딸기술 담그는 중  (5) 2017.02.18
무레이서~  (0) 2016.07.22
Mumei  (2) 2016.07.22
Neko Atsume  (0) 2016.05.10



슝슝-

'Hobby' 카테고리의 다른 글

오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
딸기술 담그는 중  (5) 2017.02.18
무~바킨~~  (3) 2016.07.26
Mumei  (2) 2016.07.22
Neko Atsume  (0) 2016.05.10


기여웡

'Hobby' 카테고리의 다른 글

오랜만의 포스팅. 로아 사전생성 후기.  (0) 2018.10.30
딸기술 담그는 중  (5) 2017.02.18
무~바킨~~  (3) 2016.07.26
무레이서~  (0) 2016.07.22
Neko Atsume  (0) 2016.05.10

+ Recent posts