diff --git a/week1.rst b/week1.rst index 826f832..c95342d 100755 --- a/week1.rst +++ b/week1.rst @@ -39,7 +39,8 @@ :numref:`serial01` は、シリアルモニタへ文字列を出力するシンプルな例です。グローバル変数 num を 0 に設定したうえで、setup()関数が1回実行されます。その後、loop()関数が繰り返し実行されます。 プログラムの出力をみるには、サンプルフォルダの ./monitor.sh またはVSCodeで 「シリアルモニタ」をひらいてください。 Serialクラスには、print()関数、println()関数、 printf()関数があります。Serial通信を用いると、デバイス側の変数の値や状況を、PC側で確認するプログラムを書くことができます。 -なお、文字化けしたり、???と表示されるときは、シリアルモニタの通信速度(ボーレート)を ``115200 bps`` に変更し、プログラムで設定した速度と一致させてください。 +なお、文字化けしたり、???と表示されるときは、シリアルモニタの通信速度(ボーレート)を ``115200 bps`` に変更し、プログラムで設定した速度と一致させてください。 +`→動画 serial01 `_ .. literalinclude:: src/serial01.ino :caption: @@ -49,6 +50,7 @@ :linenos: シリアルモニタは、デバイスからの出力を確認するだけではなく、デバイスに文字を送信することもできます。:numref:`serial02` は、シリアルモニタを介して、PCからデバイスに文字を送信する例です。シリアルモニタ上部のテキストエリアから 0 を送信すると、カウンタ num をリセットします。10〜14行目で、PCから送信された文字を、1文字ずつ ``Serial.read()`` で読み取って、配列 ``buf`` に格納しています。PCから複数の文字を1回で送信すると、 ``Serial.available()`` は連続して 1 (=true) を返しますので、1回に送信された文字をすべて ``buf`` に格納することができます。ちなみに、シリアルモニタで送信された文字列の最後は、改行コード(10)が付与されます。 +`→動画 serial02 `_ .. literalinclude:: src/serial02.ino :caption: @@ -111,6 +113,8 @@ 元のデータが保持されるメソッドと、破壊されるメソッドがあることに注意しましょう。 M5系デバイスのLCDでは、色を16ビット値(赤5bit/緑6bit/青5bit)で表現しています。 ``M5.Lcd.color565()`` という関数もありますが、ここではビット演算の理解を深めるため、関数を定義しています。 C言語のポインタや、シフト演算などを理解していると、このような処理を円滑に記述できるようになります。 +`→動画 str01 `_ + .. literalinclude:: src/str01.ino :caption: @@ -298,6 +302,7 @@ ちらつき防止のほかに、なめらかに画面スクロールする目的で、実画面よりも大きい仮想画面を作成しておき、その一部の領域のみを実画面に描画するといった用途にも使われます。 TFT_eSprite クラスは、Lcdクラスとほぼ同様の描画関数を備えています。:numref:`sprite01` は、スプライトの効果あり/なしを確認できるサンプルプログラムです。 +`→動画 sprite01 `_ .. literalinclude:: src/sprite01.ino :caption: @@ -342,6 +347,8 @@ M5StickCPlusには、システム時間(localTime)と、RTC(リアルタイムクロック:時計の機能を備えたICのこと)の2種類の時計があります。システム時間は、システムリセット(再起動)のたびに、時刻もリセットされますが、後者のRTCはリセットされません。 :numref:`ntp01` に、NTPサーバを使ってシステム時間の修正をしたのち、システム時間を1秒ごとに取得して、シリアルモニタに表示する例を示します。こちらは、M5のライブラリは不要です。configTime()でNTPサーバを設定しておくと、1時間に1回、NTPサーバに接続して、時刻修正します。 +`→動画 ntp01 `_ + .. literalinclude:: src/ntp01.ino :caption: @@ -411,6 +418,9 @@ ---------------------------------------- すこし長いですが、:numref:`httpserver01` は、80番ポートでHTTPでの通信を待ち受け(listenし)て、クライアントからの接続情報(ヘッダ情報)を返すWebサーバのシンプルな例です。クライアント(ブラウザ)からのリクエスト行のうち、 ``GET`` または ``POST`` ではじまる行があれば、変数 ``meth`` に格納します。つまり、変数 ``meth`` には、ブラウザで発行したリクエストのURLが含まれることになります。(methはmethodの略。)POSTメソッドで送信されていれば、リクエストボディに記述されたデータを変数 ``post`` に格納します。 クライアント(ブラウザ)に返す「レスポンス」は、 ``client.println()`` で送信します。最後に、``client.stop()`` で、サーバ側から接続を切断します。 +`→動画 httpserver01 `_ + + .. literalinclude:: src/httpserver01.ino :caption: