yoshiyuki's blog

Arduino/Teensy/Raspberry pi pico を利用した I2C, SPI 通信アプリを紹介します

Arduino で I2C / 繰り返しパターンの生成例と解説

この記事では自作アプリの使い方を説明しています。自作アプリに関しては以下の記事をご参照ください。
ysin1128.hatenablog.com

Windows アプリの「CMD_Multi」タブ、または、Android アプリで繰り返しパターンを生成する例を紹介します。

接続

Arduino の GND を相手の GND と接続した後で、繰り返しパターンを入力したい端子に D2-D5 を接続します。

f:id:ysin1128:20200826113545p:plain

実行例

下図は実行例です。実行結果が「Output」欄に収まらなかったので、最初の方と最後の方を表示させた状態でそれぞれスクリーンショットを撮っています。

f:id:ysin1128:20200826113958p:plain
f:id:ysin1128:20200826114010p:plain

コマンドの概要

g 00 05 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f

このコマンドの実行によりD2-D5 から下図の波形が出力されます。

f:id:ysin1128:20200826114247p:plain

この時点ではパターンの出力は1回限りで、D2-5 の出力値は 0f、つまり、全て High の状態を維持したまま停止します。

p 01 00

先の g コマンドで実行したパターンを繰り返し出力させます。D2-D5 からは g コマンドで出力した波形の繰り返しである下図のような波形が繰り返し、延々と出力され続けます。この場合、D2 は 100 Hz, D3 は 50 Hz, D4 は 25 Hz, D5 は 12.5 Hz の Clock を出力し続けます。

f:id:ysin1128:20200826114623p:plain

p 00 00

パターンの繰り返し出力を停止します。D2-D5 の出力は停止時点の状態で固定されます。

実行例では二つの p コマンドの間に 1000 ms の delay を挟んでいますが、特に意味は無く、p コマンドの実行に必要な要素ではありません。

例えば 以下の2行のコマンドだけを実行するとパターンが延々と繰り返して出力され続けます。この状態は新たに p 00 00 の実行で停止するか、Arduino の電源を落とすまで継続します。

g 00 05 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
p 01 00

コマンドの詳細

g コマンドに関しては以下の記事で解説していますので、そちらをご参照ください。

ysin1128.hatenablog.com

p 01 00

p はこのアプリ専用の Command word で、繰り返しパターンの操作を示しています。

続く 01 は繰り返しパターンのオン/オフの指定です。この値を 01 にするとオン、00 にするとオフとなります。

最後の 00 は繰り返し回数の指定です。ここでは 0 と指定していますが、これは回数指定無しで連続してパターンを繰り返す指示となります。

注意点として、この p コマンドで繰り返されるパターンは g コマンドで出力したパターンとなります。つまり、p コマンドは繰り返しパターンの出力のオン/オフを操作するのみであり、パターンそのものの生成は g コマンドで行います。
p コマンドによるパターン出力と g コマンドによるパターン出力の違いは、p コマンドで出力する場合は繰り返し出力が行えるという点の他に、g コマンドでは出力と同時に Input 端子 (A0, A1 他) の情報を取得しましたが p コマンドでは Input 端子の情報の取得は行いません。

p 00 00

p は Command word です。

続く 00 は繰り返しパターンのオフを指定しています。

最後の 00 は、オフ指定時には値に意味は無いのですが、フォーマットの都合のため 00 を置いてください。