Project 8.2 シリアル通信受信編/Serial Read and Write

前回はシリアル通信でESP32-S3からデータを受信してみました。

あわせて読みたい
Project 8.1 シリアル通信/Serial Print 前回はパッシブブザーを使用して音のトーンをコントロールしてみました。 https://kaneshige.org/?p=308 今回はESP32-S3とのシリアル通信について学びます。ESP32-S3と...

今回はESP32-S3でデータを受け取る処理を動かしてみましょう。

早速コードを書き込んで動作を試してみましょう。

目次

コード

/**********************************************************************
  Filename    : SerialRW
  Description : Use UART read and write data between ESP32 and PC.
  Auther      : www.freenove.com
  Modification: 2022/10/20
**********************************************************************/
String inputString = "";      //a String to hold incoming data
bool stringComplete = false;  // whether the string is complete

void setup() {
  Serial.begin(115200);
  Serial.println(String("\nESP32S3 initialization completed!\r\n")
                + String("Please input some characters,\r\n")
                + String("select \"Newline\" below and Ctrl + Enter to send message to ESP32S3. \r\n"));
}

void loop() {
  if (Serial.available()) {         // judge whether data has been received
    char inChar = Serial.read();         // read one character
    inputString += inChar;
    if (inChar == '\n') {
      stringComplete = true;
    }
  }
  if (stringComplete) {
    Serial.printf("inputString: %s \r\n", inputString);
    inputString = "";
    stringComplete = false;
  }
}

コード解説

18行目でシリアル通信のデータが届いているかどうか確認しています。届いていたらSerial.read()で読み取り、inChar変数に格納します。
一文字ずつ読み取るため、何回か繰り返す必要があります。

21行目で受信した文字が『\n』だったら、という条件になっていますが、『\n』は改行を意味しています。つまりエンターキーを押したということですね。改行コードが来たら一行分の受信が完了下ということで、コンプリートフラグを立てています。

25行目でコンプリートフラグが立っていたら受信した文字列をシリアル通信で出力して、フラグをfalseに戻します。条件分岐でフラグを判定するのはよくあることですので、使い方をマスターしておきましょう。いわゆる『死亡フラグ』もゲームのプログラム内のフラグの一つです!

送信エリア(赤枠のところ)に文字を入力してエンターキーを押してみましょう!

次回はADコンバーターを使用してアナログ値の読み取りをしてみましょう。

あわせて読みたい
Project 9.1 ADコンバーター/Read the Voltage of Potentiometer 前回はシリアル通信を使用して、ESP32-S3でデータを受け取る処理を動かしてみました。 https://kaneshige.org/?p=321 今回はESP32-S3のADC機能を使って、ポテンショメー...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

金重総合研究所の主席研究員。
子供の頃から研究者を目指し、ライフワークとして日々様々な研究をしています。
経営・マネジメント・金融・DXあたりが本職です。
私を採用したい人、私と一緒に働きたい人、一緒に知識を肥やしていきたい人はぜひお声がけ下さい。

コメント

コメントする

目次