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

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

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

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

Q&A

解決済

2回答

476閲覧

4から5回程度他で気が向いたときにようやく動作します??

t_yama

総合スコア11

Arduino

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

0グッド

1クリップ

投稿2022/08/26 04:08

発生している問題

arduino Leonardoを用いて9pinに スイッチを設定しkeyboardの「a」を
押した状態と同じにしました。
メモ帳で確認すると正常に表示されているのですが
目的はマイクロソフトフライトシュミレターのkeyコントローラー操作に使うのですが
いざフォーカスをフライトシュミレターformに移動して当該スイッチを押すと
瞬時に反応しないで4から5回程度他で気が向いたときにようやく動作します??(笑)
念のため直接keyboardで押すと正常に動作します
以下にprgを表示しますのでお分かりになる方ご教授をおねがいします
#include "Keyboard.h"

#define Button5 9

void setup() {
Keyboard.begin();
pinMode(Button5, INPUT_PULLUP);
}

void loop() {
if(digitalRead(Button5) == LOW){
Keyboard.print("a ");

// delay(100);

while(digitalRead(Button5) == LOW);

}

// delay(100);
}

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

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

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

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

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

t_yama

2022/08/26 05:16

早速の返信ありがとうございます 確認しましたら「a」のスペースはありませんでした コピペするときに入ってしまったようです 「スイッチのチャタリングが考慮されてません」とありますが すみません、prg教えていただければ助かります よろしくお願いいたします。
TakaiY

2022/08/26 05:41

質問は編集できるので、スペースの件修正願います。
t_yama

2022/08/26 07:05

スペースの件修正しました よろしくお願いいたします。
TakaiY

2022/08/26 08:35

直ってませんね
t_yama

2022/08/26 08:42

すみません このTeratailに慣れないため失礼ています MSFS2020参考記事ありがとうございます 早速print記述変更してやってみます 結果を明日ご連絡します ありがとうございました
t_yama

2022/08/27 02:59

お世話様です FS2020の「Arduino to send keystrokes to game」を参考にして 下記コードでロータリースイッチでバッチリ動きました\(^_^ )/ありがとうございます #include "Keyboard.h" #define Button5 9 #define Button 7 void setup() { Keyboard.begin(); pinMode(Button5, INPUT_PULLUP); pinMode(Button, INPUT_PULLUP); } void loop() { if(digitalRead(Button5) == LOW){ Keyboard.press('a'); delay(50); Keyboard.releaseAll(); while(digitalRead(Button5) == LOW); } if(digitalRead(Button) == LOW){ Keyboard.press('b'); delay(50); Keyboard.releaseAll(); while(digitalRead(Button) == LOW); } } -------------------------- ところがその後 改めてarduinoのコードをコンパイルを完了して そのあと、マイコンボードに書き込むで「ボードへの書き込みが完了しました」の後 下の窓に c:/*/documents/arduino/libraries/SwichcontrolLibbrary-1.0.0に無効なライブラリ 「c:/*/documents/arduino/libraries/SwichcontrolLibbrary-1.0.0には ヘッダファイル(.h)がありません」があります。 と、マイコンボードに書き込むでエラーメッセージが出ましたので SwichcontrolLibbrary-を2.0.2or2.0.0をarduino/Libbrary下にすべて置き替えてみましたか 同じエラーメッセージてい゛書き込みできません?? (もしかしてwindows(c:)/ProgramFiles(×86)/arduino/libraries/下におくのでしょうか?) 実はモビフライトでArduinomegaを使いFUSUIoffset他でエンコーダーとか7セグメント表示で ホームコクピットを作成していますがActionTypeでkeyboardInputがMSFS2020ではまだ使えないそうで 今般arduino leonaldを用いて操作できればとやっています、portはCOM9でやっています https://tangential-star.hatenablog.jp/entry/20201107/1604761008 で、細かく開発環境がありましたので、これもすべて設定しています(ポケモンで関係なかったのかも) 色々PC再起動したりarduino leonaldのPortを変えて見たり、この返信文を作成しているうち(笑)に またarduino leonaldに繋がったようで使えます\(^_^ )/ 「ボードへの書き込みが完了しました」の後下の窓に c:/*/documents/arduino/libraries/SwichcontrolLibbrary-1.0.0に無効なライブラリ 「c:/*/documents/arduino/libraries/SwichcontrolLibbrary-1.0.0には ヘッダファイル(.h)がありません」があります。は書き込みが完了できたので関係ないのでしょうか 長々と返信を書きましたが TakaiYさんtmpさん本当に貴重なご指導ありがとうございました 今後ともご教授宜しくお願い致します。 ----------------------------------------------------------- ### 発生している問題 arduino leonaldを用いて9pinに スイッチを設定しkeyboardの「a」を 押した状態と同じにしました。 メモ帳で確認すると正常に表示されているのですが 目的はマイクロソフトフライトシュミレターのkeyコントローラー操作に使うのですが いざフォーカスをフライトシュミレターformに移動して当該スイッチを押すと 瞬時に反応しないで4から5回程度他で気が向いたときにようやく動作します??(笑) 念のため直接keyboardで押すと正常に動作します 以下にprgを表示しますのでお分かりになる方ご教授をおねがいします #include "Keyboard.h" #define Button5 9 void setup() { Keyboard.begin(); pinMode(Button5, INPUT_PULLUP); } void loop() { if(digitalRead(Button5) == LOW){ Keyboard.print("a "); // delay(100); while(digitalRead(Button5) == LOW); } // delay(100); }
guest

回答2

0

ベストアンサー

ちょっと検索してみました。

この記事は参考が参考になるといいのですが。

https://forums.flightsimulator.com/t/arduino-to-send-keystrokes-to-game/316493

text

1I was using Keyboard.print(‘z’); 2 3I think that sends the button too quickly. 4I changed to 5 6Keyboard.press(‘z’) 7delay(50) 8Keyboard.releaseAll(); 9 10So basically, hold the ‘z’ key for 50ms.

通常、キーボードは、押すと(key press)、離すと(key release)が出るのですが、printとすると一瞬で離すことになって、FSでは認識しないってことかと。

まあ、この方法だとどのように押しても、50ms押しになってしまうので、ちゃんとするなら、押したときにpress, 離したときにreleaseを送るようにしたほうがいいかも。 長押しがこれで実現できますね。

投稿2022/08/26 07:43

TakaiY

総合スコア12745

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

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

tmp

2022/08/26 08:17

私もKeybord.printだと押下状態が短すぎるから、ゲームのキースキャン時にたまにしか拾わないから、タイトルの現象が出てるんだと思います。
guest

0

Keyboard.print("a ");

これだと、'a'とスペースの2文字を送信することになりますが大丈夫でしょうか。

また、提示のコードでは、スイッチのチャタリングが考慮されてません。
このKeyboard.printの行が2,3回連続して実行されてしまうことが想定されますが、それも大丈夫でしょうか

投稿2022/08/26 04:31

y_waiwai

総合スコア87749

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問