みずけけのブログ

自称ゲーマーがゆる〜くやるブログ


カレンダー
<<2025年
10月
>>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最近のブログ
最新のコメント
お気に入りブログ
ユーザー情報
みずけけ
28 歳/男性
3時間以内
ブログテーマ
3Dプリンター
FF TCG
ICカードダス
Reバース
THE EYE OF JUDGMENT
UNLIMITED VS
Vision
その他
アクエリアンエイジ
アンジュ・ヴィエルジュ
ウィクロス
カオス
ガンダムウォー ネグザ
ゲーム
コロッサスオーダー
シャドウバース
ジーククローネ
スリーブ
ゼクス
ソウルサモナー
ダンボール戦機
ディメンションゼロ
デジタルモンスターカードゲーム
デッキ
デュエルマスターズ
ドラゴンクエスト
ドレッドノート
バディファイト
バトルスピリッツ
バトレイヴ
パズドラTCG
ヒーローズプレイスメント
ビルディバイド
ファイブクロス
フォークロアの結晶
プリズムコネクト
プレイマット
プレシャスメモリーズ
ポケモンカードゲーム
マジックザギャザリング
ミラクルバトルカードダス
ミリオンアーサーTCG
モンスターコレクション
モンストカードゲーム
ユニオンアリーナ
ラクエンロジック
ラストクロニクル
ラッシュデュエル
リセ
リーフファイト
レベルネオ
レンジャーズストライク
ロードオブヴァーミリオン
ワンピースカードゲーム
ヴァイスシュヴァルツ
ヴァンガード
使いたいカード紹介
戦国大戦TCG
日記
旧ガンダムウォー
真・女神転生TCG
遊戯王
銀鍵のアルカディアトライブ
TCGカテゴリ
WIXOSS
ヴァイスシュヴァルツ
ChaosTCG
カードファイト!! ヴァンガード
Shadowverse EVOLVE
Z/X -Zillions of enemy X-
戦国大戦TCG
デュエル・マスターズ
バトルスピリッツ
ビルディバイド
ファイナルファンタジーTCG
フューチャーカード バディファイト
プレシャスメモリーズ
ポケモンカードゲーム
Magic: The Gathering
モンスターストライクカードゲーム
モンスター・コレクションTCG
遊戯王OCG
遊戯王ラッシュデュエル
ラクエンロジック
ラストクロニクル
Reバース for you
ICカードダス
UNLIMITED VS
アンジュ・ヴィエルジュ
ガンダムウォーNEX-A
銀鍵のアルカディアトライブ
コロッサス・オーダーTCG
THE EYE OF JUDGMENT
シャドウバース
ジーククローネ
真・女神転生TCG
戦国大戦
ダンボール戦機 LBXバトルカードゲーム
ディメンション・ゼロ
デジモンカードゲーム
ドラゴンクエスト トレーディングカードゲーム
ドレッドノート
ハースストーン
パズル&ドラゴンズTCG
ヒーローズプレイスメント
フュージョン戦記ガンダムバトレイヴ
プリズムコネクト
ミラクルバトルカードダス
ミリオンアーサーTCG
Lycee
リーフファイト
レベル・ネオ
レンジャーズストライク
LORD of VERMILION
このブログの読者
arduinoでニンテンドースイッチ用プレイステーションコントローラー変換器を作る為に四苦八苦してみよう

こんにちは、にわかゲーマーみずけけです。

みなさんプレイステーション用コントローラー(PS1〜PS2)は持っていますか?持っていますよね!
わたくしもいっぱい持っております。


(ほんの一部)

携帯ゲーム機はボタンが壊れる事が度々ありましたが、コントローラーは(今のところ)1度も壊れた事が無いので増える一方なのです。
流行った機種のコントローラーは色々とバリエーションが豊富なのでつい買っちゃうんですよね。
コントローラーなんてね、なんぼあってもいいですからね。


しかしPS2本体が壊れて幾星霜、これらコントローラーの使い道も無くなった……わけでもなく変換器を使ってPCやPS3で使えるのでした。

さよなら。






で、終わってもいいけどニンテンドースイッチでも使いたいじゃないですか!
という事でダメ元で変換器を探すとbrookとコロンバスサークルの強力タッグによる商品が見つかるわけですが、お値段も6000円程と強力。

そこで思い出した、arduinoとやらでPS2コントローラーをPCで使えるようにする変換器を作る記事の事を。
他にも思い出した、arduinoとやらでニンテンドースイッチ用コントローラーを作る記事の事を。


それら2つを合わせればarduinoでPS2コントローラーをニンテンドースイッチで使えるようにする変換器作れるんじゃね?

という事でプレイステーション用コントローラをニンテンドースイッチで使えるようにすべくarduinoであーだこーだやってたのだ。
何時ぞや書いた先にやってた別件というのが今回の変換器の事でした。

この時に買ったarduinoUNOは変換器には使えない。
色々調べて使えるようにする方法はあるにはあるっぽいけど一手間必要そうでよく分からなかったので前回のレバーレスと同じarduino micro(の互換機)を使っていくぞい。


今回使用させていただくライブラリはGPSXというもの、しかしそのままだとコンパイル時にエラーが。


Arduino1.0で、DmxSimpleライブラリのエラーをなくす

解決方法を教えてくれるサイトを発見、ありがたく活用させていただく。
どうやらライブラリの作られた時期が古くてもう使われてない記述を使っているのでエラーが出てるらしい。
エラーログで検索するのって便利ね。

というわけで勝手に弄るのは気が引けるが「GPSX」フォルダの「GPSX.h」の「#include<wiring>」を「#include<Arduino.h>」に変更。
コンパイルしてもエラーは出なくなったぜ。

とりあえずスケッチの検証は終了。
早速はんだ付けやらなんやらをして変換器を作ろう。

説明画像を見ながら線をハンダ付け、振動機能は今回は使わないのでそこらへんは配線しなくて良いかな。

そしてコントローラへ3.3V電源の供給が必要らしい。
今回使うarduinoには5Vの出力しかないのでどうにかこうにかするしかない。

5V--3.3Vレベル変換回路の原理

こちらのサイトを参考にさせていただこう。
間に2.2kの抵抗を挟んで、3.3kの抵抗を介してGNDに落とすと良いらしい。
しかし別のサイトの記述では違う値の抵抗を使っている。
これもう分かんねぇな。

とりあえず値のデカい2.2kの抵抗を使う方式でやってみよう。
動かなかったとしても壊れる事はねぇべ。

PS2コントローラのコネクタを調達するために格安の変換器を買って来てバラすという選択肢もあるが、なんか勿体無い気がしたので手持ちのピンコネクタを無理やりくっつけてみる。



普通のピンより太いのでプラスチックの部分を一部切除して強引に取り付けるのだ。






プルアップ抵抗の付け方を間違えたりもしたが、ひとまず形は完成。
ケーブルむき出し基板むき出しだが後でなんとかしよう。
3Dプリンターとダイソーのケースとかでどうにかなるだろ。

早速ニンテンドースイッチ用のライブラリと合体させてプログラムを書いていく。
スイッチ用ライブラリのリードミーの記述間違い*1にもしっかり引っかかりつつarduinoに書き込み。
結果は……






おお!ボタンが動く!
古いライブラリだが、最近のarduinoでもちゃんと動作するようだ。
それじゃ早速スイッチに接続を……ん?あれ?アナログスティックが動かない?


スティックの押し込みをしても反応が無い、スティックの角度を取得する記述をしても反応が無い。
これは……スティックだけ動いてない?
配線を間違えた?繋がってるようにみえて繋がって無い?

いやでもスティック以外はちゃんと動作してるぜ?どういうこっちゃ。


改めて「GPSX」配布サイトの写真を見てみると、アナログモードを表す赤いランプが点灯している……ように見える。
という事はアナログモードのランプが点灯してないとスティック回りは動かない設計という事か。
しかし実際にアナログモード切り替えボタンを押してみても、一瞬赤くなるだけで変化無し。
参ったなこりゃ。
ここからひたすら苦しむ事に。





強制的にアナログモード固定にする記述を追加しても変わらず、GPSX付属のサンプルスケッチをarduinoに書き込んでみてもアナログモードにはならない。
これは5V→3.3V変換が悪さをしていて上手い事動いてないのか?
それともやっぱりライブラリが古すぎて今の環境だと上手く動かない?

しかしスティックを押し込んだままアナログモード切り替えボタンを連打すると一瞬ではあるがスティック押し込みが認識される。
という事は動作する希望があるのではなかろうか。


ディレイを入れて様子を見たり、ライブラリの中身を見たりしたどうも分からない。

そうこうしている内にデジタルモードでもちゃんと動作しなくなってしまった。
接続部分やarduinoをグリグリするとたま〜に認識するのでハンダ付けが不十分なのか内部で断線しているのか、これもう分かんねぇな。
接続に使用していた線の中身が何故かサビまみれでボロボロになってたりしたのでこれも原因の1つかも……両端がそうなるならまだしも被覆に包まれた真ん中が錆びるってどういうこっちゃ。

その後、乾電池用のバッテリーテスターの線を強引に延長して各配線が通じているか調べた所、どの線も問題なく接続されている感じ。
もう一度PCに接続するとボタン入力が認識された、原因不明だが動いている……コワ。

改めてグーグルで検索してみると、同じライブラリを使っているページがヒット。
アナログモードのランプが光っており、アナログスティックも使えている。
やはりライブラリ自体は問題無さそう。

これは……覚悟を決めて電圧を上げるか。
前述の2.2kΩの抵抗に追加で1kΩの抵抗を並列に接続。
これで約0.6kΩの抵抗になる、これでコントローラが壊れたら墓でも建てよう。
いざPCに接続!




!!!

アナログモードで動いてる!
スティックの入力も認識する!
やっぱり電圧が足りて無かったのか、電圧を計算してくれるサイトに0.6kΩと3.3kΩと抵抗値を打ち込むと4Vって出てくるんだが。
これはさすがに怖いのでもうちょい抵抗値を上げとこ。
並列に繋げる抵抗を1kΩから2.2kΩに変更、これで1kΩと3.3kΩになり計算上は3.6〜7Vとなるはず。

……アナログスティックが動かなくなったんだが。
仕方がないので約0.6kΩと3.3kΩの組み合わせに戻す。
この互換機本当に5V駆動か?

紆余曲折ありましたが完成!


私の3Dプリンタではそんなに大きい物は印刷出来ないのでケースはダイソーで売ってたタッパーを使用。
ダイソー大好き♡千怪戦戯入荷して♡

私の3Dプリンタでは小さくて精度が要求される物は印刷出来ないのでPSコントローラのコネクタ部は線を直に繋いでおります。

でもコントローラーを変える度にいちいち抜き差しするのは面倒なのでそのうちコネクタを調達したい気も。




これでひとまず終わりとしても良いが、子供の頃にPS2を買ってもらった時に付属していたデュアルショック2はアナログスティックがもうクタクタ。
なのでニュートラル付近に少しデッドゾーンを設けてみたり。
プログラミングはまだまだ未熟なのでよく分かってないので力技で実装する。

・一旦アナログスティックの数値を別の変数へ渡す。
・アナログスティックの入力を出力する際はその変数を読み取る。
・アナログスティックの値は0〜255の間で動きニュートラルが128なので、一定の数値以上もしくは以下の場合(つまりニュートラル付近から一定以上離れている場合)はそのまま変数へ渡す。
・ニュートラル付近の数値の場合は変数を128に(つまり強制的にニュートラルとして)上書きする。


こうする事でスティックを中心付近でグリグリしてもスイッチ側ではニュートラルとして認識される。
問題点はデッドゾーンを超えると一気にスティックが倒される判定になるのでめちゃくちゃ繊細なスティック操作は出来なくなる。
それと縦方向と横方向の処理はリンクしてないので、例えば上に倒してる時に少し左右に傾けても斜めになりにくい。


とはいえ初音ミクProjectDIVA、東方ダンマクカグラ、クラダンX3、モンハンXX辺りで使ってみたけど問題無さそう。

という事で変換アダプタを作る為に四苦八苦していたのでした。
もしかしてこのarduino(互換機)って5V駆動じゃないのか?
パッケージにも注文履歴にも5Vって書いてあるのだが。
まあ多分私が5Vから3.3Vを作る方法を間違えているのだろう、よく分かってない事を鵜呑みにするとこうなるのだ。


めちゃくちゃ大変だった……他にもarduinoで作りたい物はあるがどうしたものか。
そのうちやるか。


自作レバーレスコントローラと並べてみた。
みなさんもニンテンドースイッチで遊ぼう。


その他参考にさせていただいたサイト。
抵抗の分圧計算


さよなら。


登録タグ: ゲーム  クラフト 

あなたはこのブログの 4 番目の読者です。


テーマ:ゲーム投稿日時:2025/10/29 20:46
TCGカテゴリ:
表示範囲:全体
前のブログへ 2025年10月のブログ一覧へ
ブログ一覧へ
 
現在コメントはありません。