ASRock BC-250 보드 RAZER CORE X CHROMA 에 설치하기 4

RAZER CORE X CHROMA 에 있는 12V 전원 을 사용하는 허브 보드를 설계중이다. 새로 설계되는 허브에는 4개의 USB 2.0 포트, 이더넷 포트를 통한 오디오 출력, 오디오 엠프 회로, 전원 감지 및 오디오 엠프 컨트롤을 위한 MCU 가 포함되어있다. 전원 소스는 12V 와 5VSB 를 사용하며, MCU 만 5VSB 를 사용하고 나머지 장치들은 12V 를 사용하도록 설계하였다. 보드 고정의 경우 RAZER CORE X CHROMA 에 장착 되어있던 PCIE 허브 카드의 브라켓을 그대로 사용할수 있도록 설계하였다. 핀 헤더를 통해 BC-250 의 USB 2.0 포트에 납땜하여 사용할 목적으로 설계 되었다. USB 2.0 포트 하나를 희생해서 사용한다. USB 허브 전원은 BC-250 에서 가져오지 않고 내부 전원 회로에서 컨버팅 된 5V3A 전원을 커런트 리미트로 제한하여 사용하도록 설계하였다. 그리고 이 보드에는 BC-250 전원이 꺼졌는지 감지하여 먼저 제작 하였던 PSU 컨트롤러로 신호를 보내주는 회로가 설계되어 지난번에 우려 했던 PSU 가 꺼지지 못하는 상황을 방지 할 수 있다.  오디오 엠프를 넣은 것은 개인적인 욕심인데 스피커를 내장하기 위함이다. 엠프를 넣지 않았다면 사이즈도 더 작아지고 설계도 많이 쉬웠을 것이다. 가장 큰 걸림돌은 USB 포트와 이더넷 포트의 위치를 바꿀 수 없다는 것 이다. 아직 수정해야 할 부분이 많아서 먼저 설계했던 브라켓이 오기 전까지는 설계를 확정 할 수 없다.

[Arduino] - 로스트 아크를 위한 4x4 키패드



게임을 즐길때는 nkey 싱글핸드 게이밍 키보드를 주로 사용한다.
fps rpg 를 가리지 않고 대부분의 게임에서 만족스러운 키보드다.
하지만 게임 중에는 한 두개 정도의 키가 부족해서 불편한 경우도있어 아쉬운 점도 있었다.
그때든 생각이 10개정도의 키만 따로 빼놓고 쓰고 싶다였다.
그렇게 만들게 된 것이 검은사막에 쓸려고 만든 4x4 키패드였는데 검은사막을 안하게되면서 키패드의 활용도가 점점 없어져갔다.

최근에 즐기기 시작한 게임이 새겼는데 바로 로스트 아크다.
rpg 게임 답게 열어봐야할 창들이 많고 단축키들도 없어서는 안되는 키들이였다.
옷장속에 있던 4x4 키패드를 다시 꺼내와 한 손 키보드에 없는 키들만 모아서 키맵핑을 해주었다.



키 배열을 따로 외우기 싫기 때문에 쿼티 키보드의 배열을 신경써서 만들었다.
로스트 아크는 Alt를 이용한 조합키가 대부분이다.
Alt 넣고보니 옆자리가 비고 쓸쓸해 보여서 Ctrl도 넣어주었다.
투명한 키는 return이다.



또 함께 사용할 기회가 생겼다니 쓰레기를 만든것 같지 않아 기분이 좋다.
이 키패드는 매크로 기능은 포함하고 있지 않고 단순한 키입력만 구현되어있다.
예전코드는 여기에서 확인 할 수 있다.

  • 로스트 아크 4x4 키패드 소스코드

/* @file Keypad.ino
|| @version 1.1
|| @author Heejoong
|| #2018-12-04
*/
#include <Keyboard.h>
const byte ROWS = 4;  //four rows
const byte COLS = 4;  //four columns
//define keypad
uint8_t keyPad[ROWS][COLS] = {
  {'l','k','j','h'}, //1
  {'i','u','y','t'}, //0
  {'m','n','c',KEY_RETURN}, //2
  {KEY_LEFT_ALT,KEY_LEFT_CTRL,'x','z'}  //3
};
byte aPin[ROWS] = {A0, A1, A9, A10}; //connect to the row pin
byte dPin[COLS] = {0 ,1 ,2 ,3}; //connect to the col pin
void setup() {
  Serial.begin(9600);
  Keyboard.begin();
  for(char a = 0 ;a < 4 ;a++ ){
      pinMode(aPin[a], INPUT_PULLUP);
  }
  for(char d = 0 ;d < 4 ;d++ ){
      pinMode(dPin[d], OUTPUT);
  }
}
void loop() {
  for (char x = 0; x < 4; x++) {
    for(char y = 0; y < 4; y++) {
      digitalWrite(x, LOW);
      if (digitalRead(aPin[y])) Keyboard.release(keyPad[x][y]);
      else Keyboard.press(keyPad[x][y]);
      digitalWrite(x, HIGH);
    }
  }
}
cs

Comments

Popular posts from this blog

[POE] - 패스 오브 엑자일 획득키 F 의 사용법 (Path of Exile)

[AD보드] - 맥북 패널을 모니터로 만들기 ( LP154WP4-TLA1 )

[Arduino] - HC-06를 이용해 PC 와 Arduino 블루투스 연결