注釈
こんにちは、SunFounderのRaspberry Pi & Arduino & ESP32愛好家コミュニティへようこそ!Facebook上でRaspberry Pi、Arduino、ESP32についてもっと深く掘り下げ、他の愛好家と交流しましょう。
参加する理由は?
エキスパートサポート:コミュニティやチームの助けを借りて、販売後の問題や技術的な課題を解決します。
学び&共有:ヒントやチュートリアルを交換してスキルを向上させましょう。
独占的なプレビュー:新製品の発表や先行プレビューに早期アクセスしましょう。
特別割引:最新製品の独占割引をお楽しみください。
祭りのプロモーションとギフト:ギフトや祝日のプロモーションに参加しましょう。
👉 私たちと一緒に探索し、創造する準備はできていますか?[ここ]をクリックして今すぐ参加しましょう!
5.12 シリアルリード¶
Serial.print() 関数を使用するとき、これに気づいたかもしれません。
印刷があるなら、読取りはありますか?シリアルモニターのテキストボックスは何に使われるのでしょうか?
そう、推測通り、シリアルモニタのテキストボックスに情報を入力することで、プログラムや回路を制御する方法があります。
このプロジェクトでは、I2C LCD1602を使用して、シリアルモニタに入力されたテキストを表示し、 Serial.read() の使用法を体験します。
必要な部品
このプロジェクトでは、以下の部品が必要です。
キットをまとめて購入するのはとても便利です、リンクはこちら:
名前 |
このキットのアイテム |
リンク |
|---|---|---|
3 in 1 Starter Kit |
380+ |
下のリンクから個別に購入することもできます。
コンポーネントの紹介 |
購入リンク |
|---|---|
回路図
配線図
コード
注釈
3in1-kit\basic_project\5.12.serial_readのパスの下にある5.12.serial_read.inoファイルを開きます。または、このコードを Arduino IDE にコピーします。
ここでは
LiquidCrystal I2Cライブラリが使用されています。 Library Manager からインストールできます。
コードが正常にアップロードされたら、シリアルモニターのテキストボックスにテキストを入力することができ、LCDに情報が表示されます。
どのように動作するのか?
void loop() { // シリアルポートから文字が届いたとき... if (Serial.available()) { // メッセージがすべて届くのを少し待つ delay(100); // 画面をクリア lcd.clear(); // 利用可能なすべての文字を読み取る while (Serial.available() > 0) { // LCDに各文字を表示 lcd.write(Serial.read()); } } }
Serial.available()は、テキストボックスから何かを入力したときに、入ってくるストリームの文字の数を取得できます。入力には2つの終端記号があるため、Aを入力すると3文字、ABを入力すると4文字が得られます。Serial.read()は、入ってくるストリームから最初の文字を取得します。例えば、ABを入力した場合、Serial.read()を一度だけ呼び出すと、文字Aが得られます。2回目の呼び出しでBが得られます。3回目と4回目の呼び出しで、2つの終了記号が得られます。入力ストリームに利用可能な文字がない状態でこの関数を呼び出すとエラーになります。
要するに、上記の二つを組み合わせ、 while ループを使用して、入力されたすべての文字を毎回読み取ることが一般的です。
while (Serial.available() > 0) { Serial.print(Serial.read()); }
ちなみに、入ってくるストリームから文字を取得するために Serial.read() を使用しないと、入ってくるストリームの文字が重なり合ってしまいます。
例えば、 A の後に AB を入力すると、入ってくるストリームは7文字を蓄積します。