質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

解決済

2回答

7402閲覧

ArduinoでPS2コントローラを使いたい

Kanon198

総合スコア13

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

0クリップ

投稿2018/09/29 14:13

ArduinoでPS2コントローラを使いたい

Arduinoでps2コントローラーを有線で使いたいので(コチラ)のサイトを参考に回路を組みました。
そして、ボタンを確認するために次のようなプログラムを書き込みました。

テストプログラム(サイト(覚えていない)から引用しました)

#include <PS2X_lib.h> PS2X ps2x; // create PS2 Controller Class int error = 0; byte vibrate = 0; //========================================================================================================== //Main //========================================================================================================== void setup(){ Serial.begin(57600); error = ps2x.config_gamepad(13,11,10,12, true, true); //setup pins and settings: GamePad(clock, command, attention, data, Pressures?, Rumble?) check for error if(error == 0){ Serial.println("0 Found Controller, configured successful"); } else if(error == 1) Serial.println("1 No controller found, check wiring, see readme.txt to enable debug. "); else if(error == 2) Serial.println("2 Controller found but not accepting commands. see readme.txt to enable debug. "); else if(error == 3) Serial.println("3 Controller refusing to enter Pressures mode, may not support it. "); //Serial.print(ps2x.Analog(1), HEX); Serial.println(" PS-C2 Controller Found OK! "); } void loop(){ //DualShock Controller ps2x.read_gamepad(false, vibrate); //ゲームパッド・ボタンの読み込み if(ps2x.Button(PSB_START)) //スタートボタン Serial.println("Start"); if(ps2x.Button(PSB_SELECT)) //セレクトボタン Serial.println("Select"); if(ps2x.Button(PSB_PAD_UP)) //上ボタン Serial.println("U"); if(ps2x.Button(PSB_PAD_RIGHT)) //右ボタン Serial.println("R"); if(ps2x.Button(PSB_PAD_LEFT)) //左ボタン Serial.println("L"); if(ps2x.Button(PSB_PAD_DOWN)) //下ボタン Serial.println("D"); if(ps2x.Button(PSB_GREEN)) //三角ボタン Serial.println("G"); if(ps2x.Button(PSB_RED)) //丸ボタン Serial.println("O"); if(ps2x.Button(PSB_PINK)) //四角ボタン Serial.println("P"); if(ps2x.Button(PSB_BLUE)) //エックスボタン Serial.println("X"); if(ps2x.Button(PSB_L3)) Serial.println("L3"); if(ps2x.Button(PSB_R3)) Serial.println("R3"); if(ps2x.Button(PSB_L2)) Serial.println("L2"); if(ps2x.Button(PSB_R2)) Serial.println("R2"); if(ps2x.Button(PSB_R1)) Serial.println("R1"); delay(50); }

問題点

シリアルモニターを見たところ、何もボタンを押していない状態でSelectが表示されました。さらに、L1を押してもR1と認識されたり、三角ボタンを押すと"G O"と認識されています。

イメージ説明

イメージ説明

試したこと

回路を作り直しましたが、原因がわかりませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

http://kanitabetai.hateblo.jp/entry/2016/08/16/231937
こちらを参考にするといいです。
たぶん直刺ししただけで、プルアップ抵抗を付けてないのではないでしょうか?

投稿2018/09/30 13:02

mappy

総合スコア65

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kanon198

2018/09/30 23:38

ありがとうございます! 解決しました!!
guest

0

参考サイトでは受信機(VS-C1)を介して接続しているようですが、有線でつなぐとはどう接続してるんでしょうか
ハードウエアが不明では回答しようもありません

投稿2018/09/29 14:25

y_waiwai

総合スコア87784

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kanon198

2018/09/29 15:38

有線のPS2コントローラの線を切断し、Arduino Megaに直刺ししました。
y_waiwai

2018/09/29 22:06

ならその回路図を提示しましょう。 繰り返しますが、ハードウエアが不明では回答できません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問