Propo 6k를 Arduino를 사용하여 게임 패드로 만듭니다.

소개



카와로보 참가자 여러분! 지난번 프로포를 만진 건 언제입니까?
나는 완전히 프로포에 먼지가 덮여 버렸다. 그래서 조금이라도 프로포의 조작감을 잊지 않도록 무언가 용도는 없을까 생각한 것이 계기입니다. 그리고 게임 패드가 없었기 때문에 딱 좋았습니다.

개요



프로포의 입력을 키보드로 변환하는 것으로, 수많은 pc게이를 조작 가능.

· 프로포의 입력을 수신기에서 Arduino로 읽습니다.
· Arduino에서 키보드 입력
라고 하는 2개의 순서로 행하고 있다.

소개 절차는 Arduino를 수신기, PC와 연결하고 프로그램을 작성하는 것입니다!

※우p주의 환경이라면 arduino에서 지정한 문자가 입력되지 않는 등의 문제가 발생.

필요한 것



· 프로포 (우 p 주는 6k를 사용)
· 수신기
・Arduino Leonard 또는 호환기 Pro Micro (Uno나 micro에서는 움직이지 않으므로 주의)
· Keyboard.h라는 라이브러리 설치 ()

연결 방법



Pro Micro의 경우
참고 : 연결이 잘못되면 수신기가 할아버질 수 있으므로 조심스럽게


수신기의 전원은 Arduino에서 공급
Arduino의 아날로그 단자와 수신기의 신호 단자를 연결

프로그램


#include "Keyboard.h"

#define CH1_PIN A0
#define CH2_PIN A1
#define CH3_PIN A2
#define CH4_PIN A3

int CH1_value = 0;
int CH2_value = 0;
int CH3_value = 0;
int CH4_value = 0;
int threshold_plus = 1700;
int threshold_minus = 1300;

void setup() {
  pinMode(CH1_PIN, INPUT);
  pinMode(CH2_PIN, INPUT);
  pinMode(CH3_PIN, INPUT);
  pinMode(CH4_PIN, INPUT);

Keyboard.begin();
}

void loop() {

    CH1_value = pulseIn(CH1_PIN,HIGH);
    CH2_value = pulseIn(CH2_PIN,HIGH);
    CH3_value = pulseIn(CH3_PIN,HIGH);
    CH4_value = pulseIn(CH4_PIN,HIGH);

     if (CH1_value>threshold_plus){
        Keyboard.press("l");
        Keyboard.release("j");
     }
     else if(CH1_value<threshold_minus){
        Keyboard.press("j");
        Keyboard.release("l");
        }   
     else {
       Keyboard.release("i");
       Keyboard.release("j");
       }

     if (CH2_value>threshold_plus){
       Keyboard.press("s");
       Keyboard.release("w");
     }
    else if(CH2_value<threshold_minus){
       Keyboard.press("w");
       Keyboard.release("s");
        }   
    else {
       Keyboard.release("s");
       Keyboard.release("w");
       }

     if (CH3_value>threshold_plus){
       Keyboard.press("i");
       Keyboard.release("k");
     }
      else if(CH3_value<threshold_minus){
       Keyboard.press("k");
       Keyboard.release("i");
        }   
    else {
      Keyboard.release("i");
      Keyboard.release("k");
       }

      if (CH4_value>threshold_plus){
      Keyboard.press("a");
      Keyboard.release("d");
     }
      else if(CH4_value<threshold_minus){
      Keyboard.press("d");
      Keyboard.release("a");
     }

    else {
      Keyboard.release("a");
      Keyboard.release("d");
       }

  /* value check    
  Serial.print("CH1 value = ");
  Serial.println(CH1_value);
  Serial.print("CH2 value = ");
  Serial.println(CH2_value);
  Serial.print("CH3 value = ");
  Serial.println(CH3_value);
  Serial.print("CH4 value = ");
  Serial.println(CH4_value);
 */
   delay(10); 
}

프로포를 임의의 각도로 넘어뜨리면 수신기로부터의 펄스가 변하기 때문에, 그 펄스의 값이 임계값을 초과하면 대응하는 키가 입력된다.


↑프로포와의 대응표

우주의 경우, 수신기로부터 보내지는 펄스는 각 채널
min 1000:N 1500:max 2000 정도였습니다.
여기는 프로포의 설정에 따라 임계값의 변경이 필요할지도 모릅니다.

※환경에 따라서는 프로그램으로 지정한 문자와 실제로 입력되는 문자가 다른 경우가 있으므로, 메모장등으로 확인해 보는 것을 추천합니다.

besiege에서 사용하는 방법




휠에 키를 할당하는 기능이 있으므로 대응하도록 할당하십시오.

마지막으로



이번에는 프로포에서 키보드 입력하는 방법을 소개했습니다.
이 기술 외에도 Arduino를 게임 패드로 인식 할 수 있습니다. 아래 라이브러리 참조
htps : // 기주 b. 코 m / M에 이로니무 s / 아 rzui ​​nojo ys chick ぃ b 등 ry
앞으로도 조금 수정해 갈 것입니다.
완료
 
 
 
카와 로보 온라인 배틀하고 싶다.

 

참고



htps : // 시젠부터 스젠. 하테나 bぉg. 코m/엔트리/2018/10/19/053742
ぉtps://ぉ오 chs. 오 rg/2020/07/06/아 r즈이노-미 c로-p 로오리나 l-케 y보아 rd/
htps //w w. 아르즈이의. ㄷc/레후 렌세/엔/펜구아게/훈 c치온 s/우 sb/케 y보아 rd/

좋은 웹페이지 즐겨찾기