質問: なぜArduinoが初期化する前に、シリアルモニタにテキストがあるのですか? 私はこれまでに数回これに遭遇しました。誰かが説明をすることができれば嬉しいです。シリアル通信を使って作成したスケッチのほとんどは、void setup()関数が実行される前に表示されるようなテキストが表示されます。たとえば、私はこれが起こる場所の下で最も簡単なスケッチを持っています。 ``` void setup(){ // put your setup code here, to run once: Serial.begin(9600); Serial.println("Welcome"); } void loop(){ // put your main code here, to run repeatedly: } ``` これを私のArduino Megasにアップロードすると、私はしばしばシリアルモニタで出力を得るでしょう: ``` WelcWelcome ``` 出力を見るためにシリアルモニタを開くと、 "Welc"はすでに書き込まれていて、残りの "Welcome"は数秒後に表示されます。シリアルモニタを閉じて再オープンしたり、シリアルモニタ内のボーレート設定を再選択すると、シリアルモニタがクリアされ、Arduinoが再起動し、 "Welc"が表示されずに画面に "Welcome"のみが表示されます。 しかし、スケッチをアップロードしてからArduino-USBケーブルをコンピュータから切断して再接続し、シリアルモニタを開くと、前と同じように画面に残ったバイトが印刷されません。 void setup()関数が呼び出される前に表示される正確なバイトの残量は、アップロードからアップロードまでによって異なります。誰も私に説明を与えて、残りのバイトを避ける方法はありますか?ありがとうございました。
回答: これはArduinoがスケッチの実行を開始し、USBチップのバッファにデータを配置したためです。シリアルモニタを開いてシリアルポートを開き、Arduinoをリセットします。だからスケッチが再び動く。 USBインターフェイスチップではなく、Arduinoのみをリセットするので、最初の実行に加えて2番目(開封後)の新しいテキストを取得できます。 余分なバイトを "回避"することはできません。 Arduinoがリセットされます。さまざまな場所にバッファーがあります。あなたはそれらのバッファを制御できません。 副注:シリアルモニタは完全に嫌です。適切な端末エミュレータを適切に使用したい場合は、ANSI制御コードを使用して画面をクリアしたり、カーソルを移動したり、カラーを適用したりすることができます。