Easy MCUser :「繰り返し制御」機能の使い方
21.06.16
【お知らせ】
今回の Easy MCUser の使い方解説は、ちょっと複雑な事をマイコンにさせたい時に役立つ、「繰り返し制御」機能です。宜しくお願いします。
【繰り返し制御】 ~~~~ 第7回 ~~~~
4-8. 同じ動作を何回も繰り返し実行させる(繰り返し制御)
今回の説明は、今まで GUI で実行してきた一連の操作を、繰り返し実行させたい時に役立つ解説です。
前回「3-4. AVR マイコンに入力されたアナログ電圧値を読み取る」の項目で使用したLCD シールドに搭載されたボタンの押下状態を検出するためには、毎回、ADC の実行ボタンを押して、IREG の値を読んで…という事を皆さん自身のGUI 操作で繰り返し実行して確かめたものと思います。これを Easy MCUser が自動的に繰り返し実行して、ADC から読み出したアナログ電圧の値を表示してくれる様になると、どれだけ楽でしょう!?
今回は、この機能を実現してみたいと思います。
「繰り返し制御」の実現方法は2種類あります。スクリプトの中に繰り返し制御の処理命令を埋め込む方法と、
「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「↺」ボタンを使って指定回数の繰り返しを実行する方法です。「↺」ボタンを使った方法は、以前の解説で試したので、今回はスクリプトの中に繰り返し制御の処理命令を埋め込む方法で実現してみます。では、早速取り掛かってみましょう。
まず始めに、IREG と TREG を初期化するスクリプト・ファイル(auto_play_ADC_read_Loop_test_01.txt)をダウンロードして、「Load」します。
ここまで、「IREG と TREG を初期化」 --> 「ADC からアナログ電圧を読み出す」 --> 「IREG0 , IREG1 でアナログ電圧の値を表示させる」…という一連の流れをスクリプトとして準備する事が出来ました。
次に、「繰り返し制御」のスクリプトを埋め込みます。
まず、スクリプトを埋め込む場所をまず、指定します。(後から埋め込んだスクリプトの位置をマウスで移動・編集する事は可能なので、とりあえずはどこでもOKですが、自分の頭の中で繰り返し処理としての先頭か、終わりの部分に近いスクリプトの行に挿入した方が後で編集がしやすいものと思います。)
スクリプトを埋め込む場所を指定したら、「Select Add / Remove command」ポップアップ・メニューから埋め込む命令を選択します。今回は、「While(Fail_count = 0)」を選択します。「While_(TREG0_<>_TREG1)」を選択すると、スクリプトを埋め込む指定をした場所に、「While(TREG0 <> TREG1)」と「End_While」の2行が連続して挿入されます。この2つのスクリプトの行の間にあるスクリプトは、(TREG0 <> TREG1)の条件が成立している間、「While(TREG0 <> TREG1)」から「End_While」の間にあるスクリプトを繰り返し実行するという命令です。
ここで、スクリプトを連結する前の一番最初に「Load」した、「IREG と TREG を初期化」 するスクリプトの内容を少し見てみましょう。22行目に「TREG0_decimal_data_set」というスクリプトが入っています。これは、TREG0 に10進数で、ある値を代入する…という意味を持っています。この行のスクリプトをマウスでクリックすると、「Val1」テキスト・ボックスには"0"が入っている事が確認出来ます。これは、GUI 操作で TREG0 に10進数の"0"を設定した結果を示しています。では、次の23行目はどうでしようか?TREG1 に10進数の"100"が入っています。それぞれの値を初期値として利用して、先ほどの「While(TREG0 <> TREG1)」の繰り返し実行回数を100回にするにはどうしたら良いでしょうか?
ここで大事なのは、以下の2つの条件を満たす様にする方法です。
(1)条件を満たさない様になったら、「While(TREG0 <> TREG1)」の繰り返しは次の行に移行する
(2)100回、繰り返したい
ちょっとプログラミングの知識がある方はすぐに答えが出てくるものと思いますが、マイコンを使うのも初めてで、かつ、プログラミングなんてしたことなし!、「Easy MCUser」を使うのも初めて!の方を対象にしておりますので、全く問題ありません。一つずつ、一歩ずつ理解して進めていきましょう。
具体的には、「While(TREG0 <> TREG1)」から「End_While」の間の中で、「TREG0 = TREG0 + 1」の数式に該当する命令を入れてあげれば良いのです。この、「TREG0」に自分自身の現在の値にプラス1する事を「インクリメント」といいます。「TREG0」をインクリメントするには、GUI により、ボタン操作をする事でスクリプトにする事が出来ます。下図は、「TREG」の数値・操作をするためのエリアです。GUI 操作の録画が出来る状態にしてから(「○」ボタンを押してから)、「TREG」の数値・操作をするためのエリアにある、「TREG0」の2つあるアップ・ダウン・アロー・ボタンの右側の「▲」印を押してみましょう。すると、ボタンの「▲」印を押した事で、「TREG0_Increment_data」というスクリプトが挿入されているものと思います。
この状態で、スクリプトを一度ファイルに保存しておきましょう。
保存するスクリプト・ファイルの名称は、後で自分が分かる名称にしておいて下さい。
スクリプト・ファイルを保存したら、「|←」ボタンを押して、次に「While(TREG0 <> TREG1)」の行に到達するまで「>」ボタンを押してみましょう。ここからがお楽しみです。
「While(TREG0 <> TREG1)」から「End_While」の間にあるスクリプトは、「>」ボタンを押すたびに一行ずつ順々に実行され、「TREG」が"100"になるまで(すなわち、100回繰り返し実行が完了するまで)の間、繰り返しスクリプトが実行されます。
えっ?100回も繰り返し処理が終わるまで「>」ボタンを押すなんて、人間は機械じゃないんだから、退屈だし、腱鞘炎になっちゃうかも?…。では、作った繰り返し処理を Easy MCUser にやらせましょう。何回か繰り返し処理が出来ている事を確認したら、途中で「>」ボタンを押すのをやめて、今度は「>!」ボタンを一回だけ押してみましょう。「>!」ボタンは、ブレーク・ポイントといって、実行して停止するという処理を実行するためのものですが、「Load」したスクリプトの中にはブレーク・ポイントが設定されていないので、すると今度は、目にもとまらぬ速さで、止まることなく100回に達するまで一気に繰り返し処理が実行されたものと思います。この100回繰り返す処理が終わったら、又、「>!」ボタン又は「>>」ボタンを押せば何回でも同じ事を繰り返せますが、コンピューターが早すぎて、「LCD シールド」に実装されたボタンの状態をADC で読み取る時間が少ししかないという方は、「TREG1_decimal_data_set」のスクリプト行をマウスでクリックして、「Val1」のテキスト・フィールドに表示された値をキーボードで変更してみましょう。この操作で繰り返し実行する回数が変えられますので、試してみて下さい。
ここまでの操作で出来上がったスクリプトを実行している間に、「LCD シールド」に実装されたボタンを色々と押してみましょう。すると、押下されたボタンの種類によって、「IREG」の値が変わっていくのが確認出来るものと思います。
今回は、スクリプトの繰り返し実行を実現する方法をご紹介しました。この様に、「Easy MCUser」を使えば、ちょっとした操作で簡単に繰り返し処理が実現出来ます。
【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。
・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、複数のマイコンへ分散して処理させられる
現在、ベータ版をダウンロード・ページからダウンロード可能です。ぜひ、この機会にお試しください。
Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.
· By GUI of the operation, you can control easily the microcontroller directly.
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.
You can try to use ももんが version. Please download form download page.
今回の Easy MCUser の使い方解説は、ちょっと複雑な事をマイコンにさせたい時に役立つ、「繰り返し制御」機能です。宜しくお願いします。
【繰り返し制御】 ~~~~ 第7回 ~~~~
4-8. 同じ動作を何回も繰り返し実行させる(繰り返し制御)
今回の説明は、今まで GUI で実行してきた一連の操作を、繰り返し実行させたい時に役立つ解説です。
前回「3-4. AVR マイコンに入力されたアナログ電圧値を読み取る」の項目で使用したLCD シールドに搭載されたボタンの押下状態を検出するためには、毎回、ADC の実行ボタンを押して、IREG の値を読んで…という事を皆さん自身のGUI 操作で繰り返し実行して確かめたものと思います。これを Easy MCUser が自動的に繰り返し実行して、ADC から読み出したアナログ電圧の値を表示してくれる様になると、どれだけ楽でしょう!?
今回は、この機能を実現してみたいと思います。
「繰り返し制御」の実現方法は2種類あります。スクリプトの中に繰り返し制御の処理命令を埋め込む方法と、
「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「↺」ボタンを使って指定回数の繰り返しを実行する方法です。「↺」ボタンを使った方法は、以前の解説で試したので、今回はスクリプトの中に繰り返し制御の処理命令を埋め込む方法で実現してみます。では、早速取り掛かってみましょう。
まず始めに、IREG と TREG を初期化するスクリプト・ファイル(auto_play_ADC_read_Loop_test_01.txt)をダウンロードして、「Load」します。
ここまで、「IREG と TREG を初期化」 --> 「ADC からアナログ電圧を読み出す」 --> 「IREG0 , IREG1 でアナログ電圧の値を表示させる」…という一連の流れをスクリプトとして準備する事が出来ました。
次に、「繰り返し制御」のスクリプトを埋め込みます。
まず、スクリプトを埋め込む場所をまず、指定します。(後から埋め込んだスクリプトの位置をマウスで移動・編集する事は可能なので、とりあえずはどこでもOKですが、自分の頭の中で繰り返し処理としての先頭か、終わりの部分に近いスクリプトの行に挿入した方が後で編集がしやすいものと思います。)
スクリプトを埋め込む場所を指定したら、「Select Add / Remove command」ポップアップ・メニューから埋め込む命令を選択します。今回は、「While(Fail_count = 0)」を選択します。「While_(TREG0_<>_TREG1)」を選択すると、スクリプトを埋め込む指定をした場所に、「While(TREG0 <> TREG1)」と「End_While」の2行が連続して挿入されます。この2つのスクリプトの行の間にあるスクリプトは、(TREG0 <> TREG1)の条件が成立している間、「While(TREG0 <> TREG1)」から「End_While」の間にあるスクリプトを繰り返し実行するという命令です。
ここで、スクリプトを連結する前の一番最初に「Load」した、「IREG と TREG を初期化」 するスクリプトの内容を少し見てみましょう。22行目に「TREG0_decimal_data_set」というスクリプトが入っています。これは、TREG0 に10進数で、ある値を代入する…という意味を持っています。この行のスクリプトをマウスでクリックすると、「Val1」テキスト・ボックスには"0"が入っている事が確認出来ます。これは、GUI 操作で TREG0 に10進数の"0"を設定した結果を示しています。では、次の23行目はどうでしようか?TREG1 に10進数の"100"が入っています。それぞれの値を初期値として利用して、先ほどの「While(TREG0 <> TREG1)」の繰り返し実行回数を100回にするにはどうしたら良いでしょうか?
ここで大事なのは、以下の2つの条件を満たす様にする方法です。
(1)条件を満たさない様になったら、「While(TREG0 <> TREG1)」の繰り返しは次の行に移行する
(2)100回、繰り返したい
ちょっとプログラミングの知識がある方はすぐに答えが出てくるものと思いますが、マイコンを使うのも初めてで、かつ、プログラミングなんてしたことなし!、「Easy MCUser」を使うのも初めて!の方を対象にしておりますので、全く問題ありません。一つずつ、一歩ずつ理解して進めていきましょう。
具体的には、「While(TREG0 <> TREG1)」から「End_While」の間の中で、「TREG0 = TREG0 + 1」の数式に該当する命令を入れてあげれば良いのです。この、「TREG0」に自分自身の現在の値にプラス1する事を「インクリメント」といいます。「TREG0」をインクリメントするには、GUI により、ボタン操作をする事でスクリプトにする事が出来ます。下図は、「TREG」の数値・操作をするためのエリアです。GUI 操作の録画が出来る状態にしてから(「○」ボタンを押してから)、「TREG」の数値・操作をするためのエリアにある、「TREG0」の2つあるアップ・ダウン・アロー・ボタンの右側の「▲」印を押してみましょう。すると、ボタンの「▲」印を押した事で、「TREG0_Increment_data」というスクリプトが挿入されているものと思います。
この状態で、スクリプトを一度ファイルに保存しておきましょう。
保存するスクリプト・ファイルの名称は、後で自分が分かる名称にしておいて下さい。
スクリプト・ファイルを保存したら、「|←」ボタンを押して、次に「While(TREG0 <> TREG1)」の行に到達するまで「>」ボタンを押してみましょう。ここからがお楽しみです。
「While(TREG0 <> TREG1)」から「End_While」の間にあるスクリプトは、「>」ボタンを押すたびに一行ずつ順々に実行され、「TREG」が"100"になるまで(すなわち、100回繰り返し実行が完了するまで)の間、繰り返しスクリプトが実行されます。
えっ?100回も繰り返し処理が終わるまで「>」ボタンを押すなんて、人間は機械じゃないんだから、退屈だし、腱鞘炎になっちゃうかも?…。では、作った繰り返し処理を Easy MCUser にやらせましょう。何回か繰り返し処理が出来ている事を確認したら、途中で「>」ボタンを押すのをやめて、今度は「>!」ボタンを一回だけ押してみましょう。「>!」ボタンは、ブレーク・ポイントといって、実行して停止するという処理を実行するためのものですが、「Load」したスクリプトの中にはブレーク・ポイントが設定されていないので、すると今度は、目にもとまらぬ速さで、止まることなく100回に達するまで一気に繰り返し処理が実行されたものと思います。この100回繰り返す処理が終わったら、又、「>!」ボタン又は「>>」ボタンを押せば何回でも同じ事を繰り返せますが、コンピューターが早すぎて、「LCD シールド」に実装されたボタンの状態をADC で読み取る時間が少ししかないという方は、「TREG1_decimal_data_set」のスクリプト行をマウスでクリックして、「Val1」のテキスト・フィールドに表示された値をキーボードで変更してみましょう。この操作で繰り返し実行する回数が変えられますので、試してみて下さい。
ここまでの操作で出来上がったスクリプトを実行している間に、「LCD シールド」に実装されたボタンを色々と押してみましょう。すると、押下されたボタンの種類によって、「IREG」の値が変わっていくのが確認出来るものと思います。
今回は、スクリプトの繰り返し実行を実現する方法をご紹介しました。この様に、「Easy MCUser」を使えば、ちょっとした操作で簡単に繰り返し処理が実現出来ます。
【ちょっと広告】
Easy MCUser は、ユーザーがプログラミングをせずに、マイコンを使って自分のやりたい事を簡単に実現するためのソフトウェアです。以下に示す様な3つの特徴を持っています。
・GUIの操作によって、簡単にマイコンを直接動かせる
・GUIの操作を録画し、録画した操作を編集する事でマイコンのプログラムを生成出来る
・1つのマイコンでは難しい処理も、複数のマイコンへ分散して処理させられる
現在、ベータ版をダウンロード・ページからダウンロード可能です。ぜひ、この機会にお試しください。
Easy MCUser enables you easily that you want to do your own by using microcontrollers without do programming. Easy MCUser has three features such as shown below.
· By GUI of the operation, you can control easily the microcontroller directly.
· Record the operation of the GUI, you can generate the program of microcontroller by editing the recorded operation.
· If you have difficult process in one microcontroller, Easy MCUser can distributes to a plurality of microcontrollers.
You can try to use ももんが version. Please download form download page.