여러 리듬게임을 하다 태블릿이 아닌 pc게임인 디제이 맥스를 구매하고 하다보니 디제이 맥스를 키보드가 아닌 전용 컨트롤러를 만들어서 하고싶은 마음이 들었다.
인터넷에서 다양한 사람들이 디제이 맥스 전용컨트롤러 a.k.a. 디맥콘을 만들어서 하는것을 보고 비슷하게 만들어 보기로 하였다.
보통 이러한 리듬게임 컨트롤러를 만들때는 리듬게임버튼으로 삼덕사나 ist버튼을 사용하지만 하나에 거의 3000원으로 비용이 비싸기도 하고 그냥 한번 만들어 보는것 이므로 집에있는 그냥 푸시버튼을 이용하기로 하였다.
이렇게 이러한 푸시버튼을 이용해서 각각 손마다 4개의 버튼을 배치하고 조이스틱으로 방향키와 엔터를 사용하도록 대충 그림으로 위치를 조정하였다.
이렇게 버튼들을 배치하도록 하고 이것을 이제 만들차례이다.
먼저 박스위에 이 배치처럼 구멍을 뚫고 버튼을 배치하고 아두이노 레오나르도에 연결하였다.
그 이후 컨트롤러로 사용하기 위해서 코딩을 하였다.
https://github.com/milk-001/djmax_controler_v1
#include <Keyboard.h>
#include <KeyboardLayout.h>
#include <Keyboard_da_DK.h>
#include <Keyboard_de_DE.h>
#include <Keyboard_es_ES.h>
#include <Keyboard_fr_FR.h>
#include <Keyboard_hu_HU.h>
#include <Keyboard_it_IT.h>
#include <Keyboard_pt_PT.h>
#include <Keyboard_sv_SE.h>
int a = 10;
int b = 9;
int c = 8;
int d = 7;
int e = 6;
int f = 5;
int g = 4;
int h = 3;
int x = 0;
int y = 0;
void setup() {
// put your setup code here, to run once:
pinMode(a, INPUT);
pinMode(b, INPUT);
pinMode(c, INPUT);
pinMode(d, INPUT);
pinMode(e, INPUT);
pinMode(f, INPUT);
pinMode(g, INPUT);
pinMode(h, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
x=analogRead(A1);
y=analogRead(A0);
if (x==0) {
Keyboard.press(KEY_LEFT_ARROW);
}else{
Keyboard.release(KEY_LEFT_ARROW);
}
if (x > 1000) {
Keyboard.press(KEY_RIGHT_ARROW);
}else{
Keyboard.release(KEY_RIGHT_ARROW);
}
if (y==0) {
Keyboard.press(KEY_UP_ARROW);
}else{
Keyboard.release(KEY_UP_ARROW);
}
if (y > 1000) {
Keyboard.press(KEY_DOWN_ARROW);
}else{
Keyboard.release(KEY_DOWN_ARROW);
}
if(digitalRead(a) == LOW){
Keyboard.press('s');
}else{
Keyboard.release('s');
}
if(digitalRead(b) == LOW){
Keyboard.press('d');
}else{
Keyboard.release('d');
}
if(digitalRead(c) == LOW){
Keyboard.press('f');
}else{
Keyboard.release('f');
}
if(digitalRead(d) == LOW){
Keyboard.press('k');
}else{
Keyboard.release('k');
}
if(digitalRead(e) == LOW){
Keyboard.press('l');
}else{
Keyboard.release('l');
}
if(digitalRead(f) == LOW){
Keyboard.press(KEY_LEFT_SHIFT);
}else{
Keyboard.release(KEY_LEFT_SHIFT);
}
if(digitalRead(g) == LOW){
Keyboard.press(';');
}else{
Keyboard.release(';');
}
if(digitalRead(h) == LOW){
Keyboard.press(KEY_RIGHT_SHIFT);
}else{
Keyboard.release(KEY_RIGHT_SHIFT);
}
}
이맇게 코딩하고 그 후에 코드를 업로드 해서 완성하였다.
이렇게 완성된 컨트롤러로 게임을 하니 이전보다 더 재미있게 할수 있었다 하지만 이 컨트롤러를 일반 푸시버튼으로해서 키압이 너무 높고 버튼이 부족해서 8키를 못하는 부분그리고 너무 컨트롤러의 높이가 높은것 등의 여러 단점이 있어서 다음번에는 이걸 수정해서 다시 만들어보고 싶었다.