M5 Stack에서 BM 컨트롤러 실행
하드웨어 제작
PS3 컨트롤러를 연결하는 커넥터를 만듭니다.
이번에는 아래 콘센트를 사용했습니다.
경로설정
콘센트와 M5 Stack Core 2의 배선은 이렇습니다.

상술한 플러그라면 8번은 끝이 없다.
3번은 진동용 전원으로 7∼9V를 입력해야 해 이번에는 사용하지 않았다.
1호와 6호에 1kΩ가 장착된 당김 저항.
위로 올리면 이런 느낌이에요.
예쁘지는 않지만 배선하면 이런 느낌이에요.
플러그는 고무관으로 고정한다.

소프트웨어
이번에 사용한 창고는 여기 있습니다.
살짝 수정할게요.
이 라이브러리를 직접 사용하면 작동하지 않으니 조금만 수정해 주세요.
환경에 대한 수정
PS2X_lib.h
와 PS2X_lib.cpp
중 이하ESP8266
로 지정된 부분에 추가ESP32
했다.수정 전
#ifdef ESP8266
수정 후#if defined (ESP8266) || defined(ESP32)
아날로그 연결을 추가할 때의 처리
이 프로그램 라이브러리는 아날로그 통신을 전제로 한다.
디지털로 작동하는 기기(이번에는 BM 컨트롤러)의 경우 데이터를 확보해 확인 처리하는 데 시간이 걸리는 현상이 발생했다.
따라서 디지털 기기의 경우 검사 취소 처리가 추가됩니다(일시적으로 이동됩니다)
통신에 대해서 자세히 알아보고 싶으신 분들은 이쪽을 봐주세요.
데이터를 검사할 때 숫자(0x40)라도 끝 대상으로 추가됩니다.
고친 곳
PS2X_lib.cpp(122행)
if ((PS2data[1] & 0xf0) == 0x70 || (PS2data[1] & 0xf0) == 0x40)
break;
이어 시뮬레이션이 아니면 취득 속도를 조정하는 처리가 있기 때문에 숫자의 경우 무효로 한다.고친 곳
PS2X_lib.cpp(131행)
if ((PS2data[1] & 0xf0) != 0x70 && (PS2data[1] & 0xf0) != 0x40) {
if (read_delay < 10)
read_delay++; // see if this helps out...
}
함수 반환 확인에도 추가됩니다.고친 곳
PS2X_lib.cpp(161행)
return ((PS2data[1] & 0xf0) == 0x70 || (PS2data[1] & 0xf0) == 0x40);
PS2X_Lib 정보
버튼 가져오기
read_gamepad
에서 현재 단추에 대한 정보를 얻습니다.※ 위 수치가 지원되지 않으면 500ms 정도의 처리 시간이 필요합니다.
PS2X_lib.h
void read_gamepad();
각 버튼의 상태를 얻는 방법은 네 가지가 있다.PS2X_lib.h
// 現在ボタンの状況を取得することができます。
boolean Button(uint16_t);
// ボタンの状態が変化したかどうかを取得することができます。
boolean NewButtonState(unsigned int);
// ボタンが押されたかどうかを取得することができます。
boolean ButtonPressed(unsigned int);
// ボタンが離されたかどうかを取得することができます。
boolean ButtonReleased(unsigned int);
매개 변수는 확인할 단추 형식입니다PS2X_lib.h
#define PSAB_PAD_RIGHT 9
#define PSAB_PAD_UP 11
#define PSAB_PAD_DOWN 12
#define PSAB_PAD_LEFT 10
#define PSAB_L2 19
#define PSAB_R2 20
#define PSAB_L1 17
#define PSAB_R1 18
#define PSAB_GREEN 13
#define PSAB_RED 14
#define PSAB_BLUE 15
#define PSAB_PINK 16
#define PSAB_TRIANGLE 13
#define PSAB_CIRCLE 14
#define PSAB_CROSS 15
#define PSAB_SQUARE 16
샘플 이동
PSX2Lib견본 수정, 동작 좀 봐.
GPIO를 M5 Stack Core 2용으로 변경합니다.
PS2X_Example.ino(9행)
#define PS2_DAT 27
#define PS2_CMD 19
#define PS2_SEL 32
#define PS2_CLK 33
이동하면 이런 느낌으로 로그를 출력합니다.BM 컨트롤러를 이동했기 때문에 출력
Unknown Controller Type
이지만 동작한다.
활용해 보다
BM 컨트롤러 구성
BM 디렉터 구성은 이런 느낌입니다.
룰렛 부분은 오른쪽 주위에서 위로 단추를 누르고 왼쪽으로 회전하여 아래 단추로 입력하면 식별된다.

too와 합작
간신히 소니의 투를 왔다.
조작은 6번 룰렛이 오른쪽으로 돌면 전진하고 왼쪽으로 돌면 전진한다.
1번을 누르고 왼쪽으로, 2번을 누르고 오른쪽으로 돌아라.
3~5번 버튼을 돌릴 때 각도가 바뀌어 모두 누르고 회전한다.
조작하면 이런 느낌.
※ [주의] 트위터에 기고하는 사용 프로그램 라이브러리는 다르다.
총결산
PS3용 플러그를 구할 수 있다면 그 다음엔 간단하게 완성할 수 있을 것 같아요.
이번에 BM 컨트롤러를 사용했지만 또 다른 기회가 있어서 활용하려고 합니다.
Reference
이 문제에 관하여(M5 Stack에서 BM 컨트롤러 실행), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masaya3/items/ad8da70823a30694f490텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)