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

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

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

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

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

2回答

6751閲覧

Nintendo SwitchにArduino Leonardoをコントローラーとして認識させたい

tys.prg

総合スコア13

Arduino

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

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2021/04/13 16:15

編集2021/04/13 23:01

前提・実現したいこと

表題の通りです。
こちらの記事を参考にしました。
当方マイコンもC++も初めてですので、質問内容に不備がございましたらご指摘いただけますと幸いです。
https://tangential-star.hatenablog.jp/entry/20201107/1604761008

環境

MacBook Pro 13-inch, 2020
macOS Catalina 10.15.6
Arduino Leonardo
Arduino 1.8.13

試したこと

上記リンクの手順を辿り、以下のコードを書きました。
Arduinoへのコンパイル・書き込みは正常に終了しましたが、switchに接続しても動作しませんでした。

arduino

1#include <SwitchControlLibrary.h> 2 3void setup() { 4 // put your setup code here, to run once: 5 6} 7 8void loop() { 9 // put your main code here, to run repeatedly: 10 SwitchControlLibrary().PressButtonA(); 11 delay(30); 12 SwitchControlLibrary().ReleaseButtonA(); 13 delay(150); 14}

その後、そもそも動いているのかの確認として以下のコードを書いたところ、
シリアルモニタで"アイウエオ"、"かきくけこ"の出力は確認出来ました。

arduino

1#include <SwitchControlLibrary.h> 2 3void setup() { 4 // put your setup code here, to run once: 5 6} 7 8void loop() { 9 // put your main code here, to run repeatedly: 10 SwitchControlLibrary().PressButtonA(); 11 Serial.println("アイウエオ"); 12 delay(30); 13 SwitchControlLibrary().ReleaseButtonA(); 14 Serial.println("かきくけこ"); 15 delay(150); 16}

boards.txtは以下二つとも書き換えました。

/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/boards.txt /Users/{user_name}/Documents/Arduino/hardware/arduino/avr/boards.txt

発生している問題

記事中での手順では、この後switchにarduinoをusb接続すればAボタン連打の動作をするとのことでしたが、動作しません。
PCに接続している時は

  • ONランプ:点灯
  • TXランプ:点滅

なのですが、switchに接続するとONランプが点灯するのみでTXランプは点かないのが気になります。

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

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

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

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

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

guest

回答2

0

はじめまして。おはようございます。
もし解決済みでした。失礼いたします。
ボタン操作のコマンドの後に
SwitchControlLibrary().sendReport()を入れてありますか?
あとsetup()の処理に遅延処理を入れた方がいいと思います。
switchがUSBを認識するまでに時間がかかるからです。
SwitchControlLibrary().PressButtonA();
delay(30);
SwitchControlLibrary().ReleaseButtonA();
delay(150);
SwitchControlLibrary().sendReport();
で一度実行してみてください。

投稿2022/02/19 22:40

Amadeus

総合スコア4

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

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

0

上記リンクの手順を辿り、以下のコードを書きました。

そうですか? リンク先の手順を辿ると、Switchに繋がる時のスケッチは

Arduino

1#include <SwitchControlLibrary.h> 2 3void setup() { 4 // put your setup code here, to run once: 5 6 7} 8 9void loop() { 10 // put your main code here, to run repeatedly: 11 12 // A連打 13 SwitchControlLibrary().PressButtonA(); 14 delay(30); 15 SwitchControlLibrary().ReleaseButtonA(); 16 delay(150); 17 18}

であるような気がします。Switch側のUSBでCDC(USBシリアル)を受け取ってもらえないとそこで処理が滞留してしまって動かなくなるんじゃなかったかしら。

当方マイコンもC++も初めてですので

であれば、オリジナリティを加える前にまずは言われたままをやってみるべきではないでしょうか?

投稿2021/04/13 22:11

thkana

総合スコア7629

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

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

tys.prg

2021/04/13 22:54

ご回答ありがとうございます。 すみません書き方が悪かったです。 オリジナリティとはSerial.println()のことであっておりますでしょうか? 最初はそれ無しで参考コード通りでやったけどダメだったので、その後そもそも動いてるかの確認としてシリアルモニタに出力する用に追記したものです。 失礼しました。
thkana

2021/04/13 23:45

Switchを持っていないので私は知りませんが、TxのLEDが点灯しない(この観察ができているのは初心者としては素晴らしいとおもいます。「動かない」で終わっちゃう人は多いので)というところからすると、Serial出力を混ぜたら動かない、それは言えるでしょう。 では、スケッチが大丈夫ならboard.txtしか疑うところがありませんね。「書き換えた」ではなく「どう変更したか」「それは正しいか」を確認することになるでしょうか。
tys.prg

2021/04/14 01:40

なるほど……。まずはboards.txtの線を最優先でもう一度しっかり確認してみたいと思います。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問