LoRa 모듈 E22-900T22S Breakout Board 설계 2

Image
지난번 설계 에서 두 가지 업데이트 사항이 있다. 첫 번째로 3.3V 로 로직 컨버터를 거치지 않고 직접 통신할수 있는 포트를 구성하였다.  이 포트를 통해 3.3V 동작의 MCU를 사용할때 좀 더 빠르게 회로를 구성  할수 있을것으로 기대한다. 두 번째로 동작 전압 레벨이 서로 다른 MCU 와 Lora 모듈이 통신할때 사용할 기준전압을 직접 인가 할 수 있도록 하였다. 보드에는 위 와같은 점퍼가 주어지는데 3.3V 나 5V 로 점프 시키지 않을 경우 VREF 핀에 사용할 소스전압을 직접 인가해 주어야한다. 특수한 경우가 아니라면 Vref를 사용하는일은 없을것 같다. 위사 진들은 이번에 제작한 테스트 모듈이다.  왼쪽은 E22-900T22S 모듈이고 오른쪽은 ATmega328P/PB 3.3V 8Mhz 보드를 준비했다. 오른쪽의 보드는 ATmega328P/PB 를 모두 장착하여 사용할 수 있도록 설계했다. E22-900T22S 보드의 전체 회로는 다음과 같다. 동작 전압 레벨이 서로 다른 장치와 통신 할 수 있도록 레벨 컨버터를 추가 하였고, 핀 헤더를 장착하여 다른 MCU 보드와 통신하거나 점퍼를 수정해서 USB 시리얼 통신을 할수 있도록 했다. 모듈의 테스트는 mischianti의 E22 라이브러리 를 사용했다. 정리가 아주 잘 되어있는 라이브러리로 생각된다. 아래 코드는 라이브러리에 포함된 시리얼 입력을 LoRa 통신으로 전송하는 예제이다. Lora ATmega328p AUX D3 RX D4 TX D5 M1 D6/GND M0 D7/GND 송신측 코드 #include "Arduino.h" #include "LoRa_E22.h" LoRa_E22 e22ttl(4, 5, 3, 7, 6); void setup() { Serial.begin(9600); delay(500); // Startup all pins and UART e22ttl.begin(); Serial.println(&q

[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)

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

[Python] - 블루투스 모듈 HC-06의 MAC 주소를 이용하여 통신 포트 찾기