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

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

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

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

解決済

arduinoのシリアルモニタが準備中から準備完了にならないことについて

kotaro425
Bbee7358

総合スコア11

Arduino

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

2回答

0リアクション

0クリップ

277閲覧

投稿2022/08/26 03:49

編集2022/08/26 03:55

前提

arduino IDEでTeensy4.1につながっているセンサーの値をfor文で1000回とり、シリアルモニタにそのデータをすべて表示させようとしています

Teensy4.1にはvinから5V電源を入れており、そのうえでusbを指しています

プログラム面は一切変えていないのですが、突然シリアルモニタがスタートしなくなりました

実現したいこと

  • [ ]シリアルモニタにデータを表示させる

発生している問題・エラーメッセージ

プログラムをTeensyに書き込むことは出来るのですが、シリアルモニタがうまく動きません

該当のソースコード

Arduino言語(C++)

#include<Wire.h> //I2Cライブラリ int a = 0; //ステートマシン用 int i = 0; //センサの値の回数を数える(ディスプレイ用) int ii = 0; //センサの値の回数を数える(マジで100回数える) int c[100]; //脳筋作業をするかしないか選択 float d = 0; //センサの値(小数ありをいれるとこ) int x; //displayの座標 int y; //displayの座標 int k = 0; //回数管理 float pd_value[100]; //センサの値 int pd_ratio[100]; //センサの値の割合 /*ピンの名前を設定********************************************/ const int to_switch = 14; //スタート用トグルスイッチ const int ta_switch = 15; //タクトスイッチ //motor1 const int M1_ENABLE = 0; //PWM(パワー設定) const int M1_PAHSE = 1; //digitl(正転、逆転設定) //motor2 const int M2_ENABLE = 2; //PWM(パワー設定) const int M2_PAHSE = 3; //digitl(正転、逆転設定) //motor3 const int M3_ENABLE = 4; //PWM(パワー設定) const int M3_PAHSE = 5; //digitl(正転、逆転設定) //motor4 const int M4_ENABLE = 28; //PWM(パワー設定) const int M4_PAHSE = 29; //digitl(正転、逆転設定) void setup(void) { Serial.begin(115200); // シリアル通信の準備をする while (!Serial); // 準備が終わるのを待つ Serial.println("プログラム開始"); // シリアル通信でメッセージをPCに送信 pinMode(13, OUTPUT); //Lチカ pinMode(27, OUTPUT); //ラインLED pinMode(to_switch, INPUT); // トグルスイッチ(スタート用) pinMode(ta_switch, INPUT); //タクトスイッチ(計測用) pinMode(26,OUTPUT); //A(ラインマルチプレクサでピン選択) pinMode(25,OUTPUT); //B(ラインマルチプレクサでピン選択) pinMode(24,OUTPUT); //C(ラインマルチプレクサでピン選択) pinMode(23,INPUT); //ic1のセンサー値 } void loop(void) { if(a == 0) //一番最初にくるところ(リセットステート) { digitalWrite(M1_PAHSE,LOW); //正転 analogWrite(M1_ENABLE,0); //PWM Speed Control digitalWrite(M2_PAHSE,LOW); //正転 analogWrite(M2_ENABLE,0); //PWM Speed Control digitalWrite(M3_PAHSE,LOW); //正転 analogWrite(M3_ENABLE,0); //PWM Speed Control digitalWrite(M4_PAHSE,LOW); //正転 analogWrite(M4_ENABLE,0); //PWM Speed Control i = 0; //センサの値の回数を数える(ディスプレイ用) ii = 0; //センサの値の回数を数える(マジで100回数える) k = 0; //回数管理 digitalWrite(13,HIGH); //Lチカ digitalWrite(27,HIGH); //ラインLEDオン //一番右のラインセンサを選択 digitalWrite(26,LOW); //A(ラインマルチプレクサでピン選択) digitalWrite(25,HIGH); //B(ラインマルチプレクサでピン選択) digitalWrite(24,HIGH); //C(ラインマルチプレクサでピン選択) if(digitalRead(to_switch) == 1) //ボタンがオンになったら計測を開始する { // digitalWrite(M1_PAHSE,HIGH); //正転 // analogWrite(M1_ENABLE,255); //PWM Speed Control // digitalWrite(M2_PAHSE,HIGH); //正転 // analogWrite(M2_ENABLE,255); //PWM Speed Control // digitalWrite(M3_PAHSE,HIGH); //正転 // analogWrite(M3_ENABLE,255); //PWM Speed Control // digitalWrite(M4_PAHSE,HIGH); //正転 // analogWrite(M4_ENABLE,255); //PWM Speed Control // delay(1000); //一秒待つ(モーターが全速力で回るまでまつため) a = 10; //計測スタート } } else if(a == 10) //スタートボタンが押されたら { for(int i=0; i<=1000; i++) { pd_value[i] = analogRead(23); }; a = 20; //データを表示 } else if(a == 20) //集めたデータを表示 { for(int i=0; i<=1000; i++) { Serial.println(pd_value[i]); }; a = 30; } else if(a == 30) { if(digitalRead(ta_switch) == LOW) { a = 20; //計測データをみる }; } if(digitalRead(to_switch) == 0) { a = 0; //すべてをリセット } }

試したこと

-簡単なシリアルモニタを動かすプログラムを入力→シリアルモニタは作動

int counter = 0; // counterという名前の変数を用意して、0をセットする void setup() { // 起動後、この中の内容が上から順に1回実行される Serial.begin(115200); // シリアル通信の準備をする while (!Serial); // 準備が終わるのを待つ Serial.println("プログラム開始"); // シリアル通信でメッセージをPCに送信 // 最後まで実行された後はloop関数に移行する } void loop() { // setup関数が終了すると、この中の内容が上から順に何度も実行されつづける Serial.print("カウンターの値 "); // シリアル通信でメッセージをPCに送信 Serial.println(counter); // シリアル通信でカウンターの値をPCに送信 counter = counter + 1; // カウンターの値を1増やす delay(1000); // 1000ミリ秒(1秒)待機 // 最後まで実行された後はloop関数の先頭に戻る }

-シリアルモニタが表示されないコードの"while (!Serial);"をコメントアウト→それ以降のプログラムは動くようになるが、シリアルモニタは表示されない
-パソコンを再起動

補足情報(FW/ツールのバージョンなど)

ですので、私はシリアルモニタの準備が永遠にできていないと思うのですが実際は何が原因なのでしょうか?
解決方法を教えていただけるとありがたいです
ようしくお願いします!!

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

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

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

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Arduino

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