아두이노 리듬 게임 패드, 아두이노 디맥콘

오세훈·2023년 4월 18일
0
post-thumbnail

박스, 아두이노 레오나드로, 알리에서 산 리듬게임버튼, 전선 등을 이용해서 만든 리듬게임패드입니다. 3d캐드를 만질 줄 몰라서 박스로 잘라서 썼는데 확실히 박스라 그런가 내구성은 별로 좋지는 않아서 현재는 쓰고있지 않습니다.

사진이나 자세한 내용은 네이버 블로그에 들어가시면 볼 수 있습니다.

코드

#include "Keyboard.h"

const byte xAxis = A1; //조이스틱 x축 아날로그 핀 번호
const byte yAxis = A0; //조이스틱 y축 아날로그 핀 번호
const byte dAxis = 12; //조이스틱 버튼 핀 번호s
const byte button[] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; //버튼 입력 핀 번호
const char bt[] = {'n', 'l', 'k', 'j', KEY_RIGHT_SHIFT, KEY_LEFT_SHIFT, 'd', 's', 'a', KEY_ESC}; //버튼 입력키
const char joyArrow[] = {KEY_RETURN, KEY_LEFT_ARROW, KEY_RIGHT_ARROW, KEY_UP_ARROW, KEY_DOWN_ARROW}; //조이스틱 방향키

void setup() {                                                                                                                                                                                             
  Keyboard.begin();
  for(int i=0; i<10; i++){ //2~11번까지의 디지털 핀 사용 선언
    pinMode(button[i], INPUT_PULLUP); // 버튼 사용 선언
  }
  pinMode(dAxis, INPUT_PULLUP); // 조이스틱 사용 선언
}

void loop() {
  int AXIS_X = analogRead(xAxis);
  int AXIS_Y = analogRead(yAxis);
  int AXIS_D = digitalRead(dAxis);
  joyStick(AXIS_D, joyArrow[0]); // enter, 조이스틱 누름
  joyStickXY(AXIS_X, joyArrow[1], joyArrow[2]); // 좌우, 조이스틱 이동
  joyStickXY(AXIS_Y, joyArrow[3], joyArrow[4]); // 상하, 조이스틱 이동
  for(int i=0; i<10; i++){
    key(button[i], bt[i]); // 버튼 누름
  }
}

//조이스틱 누름
void joyStick(int joyClick, char direc){
    if(joyClick == 0){
       Keyboard.press(direc);
    }
    else{
       Keyboard.release(direc);
    }
}

//조이스틱 이동
void joyStickXY(int joyXY, char direc1, char direc2){
    if(joyXY<=150){
       Keyboard.press(direc1);
    }
    else if(joyXY>=850){
       Keyboard.press(direc2);
    }
    else{
      Keyboard.release(direc1);
      Keyboard.release(direc2);  
    }
}

//버튼 누름
void key(byte btn, char selct){
  if(!digitalRead(btn)){
    Keyboard.press(selct); //키보드가 눌렸다.
  } else{
    Keyboard.release(selct); //키보드가 떨어졌다.
  }
}

만드는 영상

레딧1

레딧2

깃허브

네이버블로그

profile
코딩 열공

0개의 댓글