【PIO の使い方】~~~~ 第1回 ~~~~
3-1. LED を点灯/消灯させてみる(IOポートの出力制御)
Arduino 互換ボードのほとんどは、AVR マイコンの IO ポートの PB5(ポートBの5番ピン)に LED が基板上で接続されています。この LED を点灯/消灯させてみましょう。
まず、Easy MCUser のタブ・パネルの中から「PIO」をマウスでクリックし、選択状態にします。
すると、ポートB,C,D の各ポートについて、さらにピン毎に制御が可能かどうかの状態表示がされています。例えば、図のポートB に着目してみると、PB5~PB0 は選択可能状態となっていますが、PB7~PB6 は選択が出来ない状態となっています。これは、「MCUタブ・パネル」の中で「Pin Map」で設定したマイコンの機能が反映された結果となります。要するに、マイコンで制御したい機能によって、ユーザーが自由に使える外部ピンが変わる事を意味していて、ユーザーがマイコンで制御したい機能を決めると、Easy MCUser は自動的にユーザーが自由に使えるピンを教えてくれるという訳です。
さて、それでは PB5 を制御してLED を実際に点灯/消灯させてみます。
PB5 のチェック・ボックスにチェックを入れます。各ポートのチェック・ボックスは、ユーザーによってチェックが入れられると、右側のポップアップ・メニューが選択可能になります。
右側のポップアップ・メニューを選択すると、「In (P up)」,「In」,「Out (L)」,「Out (H)」,「Out (X)」が現れます。この中から、「Out (H)」を選択し、「Execute」ボタンを押します。
すると、実際にArduino 互換ボードの LED が点灯します。
次に、右側のポップアップ・メニューから「Out (L)」を選択して、同様に「Execute」ボタンを押してみましょう。今度は、Arduino 互換ボードの LED が消灯したと思います。
この様に、Easy MCUser を使えば PC からマウスの操作だけで簡単にマイコンを制御出来ます。
「PIO」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのページを参照して下さい。
目次へ戻る
3-1. LED を点灯/消灯させてみる(IOポートの出力制御)
Arduino 互換ボードのほとんどは、AVR マイコンの IO ポートの PB5(ポートBの5番ピン)に LED が基板上で接続されています。この LED を点灯/消灯させてみましょう。
まず、Easy MCUser のタブ・パネルの中から「PIO」をマウスでクリックし、選択状態にします。
すると、ポートB,C,D の各ポートについて、さらにピン毎に制御が可能かどうかの状態表示がされています。例えば、図のポートB に着目してみると、PB5~PB0 は選択可能状態となっていますが、PB7~PB6 は選択が出来ない状態となっています。これは、「MCUタブ・パネル」の中で「Pin Map」で設定したマイコンの機能が反映された結果となります。要するに、マイコンで制御したい機能によって、ユーザーが自由に使える外部ピンが変わる事を意味していて、ユーザーがマイコンで制御したい機能を決めると、Easy MCUser は自動的にユーザーが自由に使えるピンを教えてくれるという訳です。
さて、それでは PB5 を制御してLED を実際に点灯/消灯させてみます。
PB5 のチェック・ボックスにチェックを入れます。各ポートのチェック・ボックスは、ユーザーによってチェックが入れられると、右側のポップアップ・メニューが選択可能になります。
右側のポップアップ・メニューを選択すると、「In (P up)」,「In」,「Out (L)」,「Out (H)」,「Out (X)」が現れます。この中から、「Out (H)」を選択し、「Execute」ボタンを押します。
すると、実際にArduino 互換ボードの LED が点灯します。
次に、右側のポップアップ・メニューから「Out (L)」を選択して、同様に「Execute」ボタンを押してみましょう。今度は、Arduino 互換ボードの LED が消灯したと思います。
この様に、Easy MCUser を使えば PC からマウスの操作だけで簡単にマイコンを制御出来ます。
「PIO」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのページを参照して下さい。
目次へ戻る
【PWM の使い方】 ~~~~ 第2回 ~~~~
3-2. LED の明るさを変えてみる(PWMの出力制御)
「3-1. LED を点灯/消灯させてみる」の項目では、LED をユーザーの操作に合わせて、点灯と消灯を試してみました。今度は、ダイナミックに、かつ自動的に点滅を繰り返す様にしてみましょう。この機能を実現するためには、マイコンの中で「PWM」(Pluse Width Moduration)という機能を使います。この PWM 機能を使えば、LED を点灯している時間と消灯している時間や、その比率を自由に変える事が出来る様になります。PWM は、LED の制御だけではなく、モーターの制御にも広く使われています。この機能の使い方をマスターして、マイコンから制御出来るデバイスのバリエーションを増やしていきましょう。
では、早速 PWM の使い方を見てみます。
AVR マイコンの PWM 出力ポートは、PB2 となっています。このポートが LCD シールドのバックライト LED (LCD 表示パネルの明るさを変えるためのライト)に接続されています。今回は、この LCD シールドを使ってLCD のバックライトとして使用されている LED の明るさがどの様に変わるかを試してみます。
まず始めに、「MCU タブ・パネル」でPWM 制御をするMCU の「Select Function」ポップアップ・メニューで「PWM Only」又は、「PWM + LCD」を選択します。今回は、LCD シールドを使って PWM の機能を試すので、「PWM + LCD」を選択します。
次に、「PWMタブパネル」を選択します。「PWMタブパネル」を選択すると、PWM 信号か出力されている時間を定義するためのスライダー・バーと、点滅を繰り返す周期を定義するためのスライダー・バーが変更可能な状態になっています。
又、「DIV_NUM」ポップアップメニューも選択可能な状態になっています。
PWM で一番始めに設定するのは、「DIV_NUM」ポップアップメニューです。「DIV_NUM」は、マイコンの中で時間を計測する目的の機能として搭載されているタイマーという機能を、どの様なスピードで動かすかの定義に使います。ポップアップメニューを開くと、1/1 ~1/1024 までの値が選択可能になっている事がわかります。分母が大きい方が PWM の周期が長くなります。今回は、1/1 を選択して周期を一番短くしましょう。
次に、設定するのが、2つあるスライド・バーのうちの 「Cycle time」スライド・バーです。このスライド・バーでは、点滅周期の微調整が出来ます。
もう1つのスライド・バーは、「Pulse Width」スライド・バーで、点灯している時間を設定出来ます。これらのスライド・バーをマウスでドラッグして表示されている数値がどの様に変化するのかを確かめてみましょう。動かしてみて、数字の値から、何となくどの様な信号が AVR マイコンから出力されるのかイメージがつきましたでしょうか ?
まだ、この段階では PWM の設定をしただけであるため、LCD の LED バックライトの明るさは変化しません。では実際に AVR マイコンから信号を出力させてみましょう。 PWM 機能を実際に動作させるためには、「Execute」ボタンを押します。2つあるスライド・バーを色々と変えてみて「Execute」ボタンを押し、どの様な明るさになるのか実験してみて下さい。実際に明るさと点滅のスピードが変わることで、より理解が深まるものと思います。
この様に「Easy MCUser」を使う事で、プログラムを組まずにマイコンが持っている機能を GUI で 操作し、AVR マイコンと接続されたデバイスを制御出来る様になります。そして、デバイスの機能や特性が簡単に試せる様になります。
「 PWM 」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルを参照して下さい。
目次へ戻る
3-2. LED の明るさを変えてみる(PWMの出力制御)
「3-1. LED を点灯/消灯させてみる」の項目では、LED をユーザーの操作に合わせて、点灯と消灯を試してみました。今度は、ダイナミックに、かつ自動的に点滅を繰り返す様にしてみましょう。この機能を実現するためには、マイコンの中で「PWM」(Pluse Width Moduration)という機能を使います。この PWM 機能を使えば、LED を点灯している時間と消灯している時間や、その比率を自由に変える事が出来る様になります。PWM は、LED の制御だけではなく、モーターの制御にも広く使われています。この機能の使い方をマスターして、マイコンから制御出来るデバイスのバリエーションを増やしていきましょう。
では、早速 PWM の使い方を見てみます。
AVR マイコンの PWM 出力ポートは、PB2 となっています。このポートが LCD シールドのバックライト LED (LCD 表示パネルの明るさを変えるためのライト)に接続されています。今回は、この LCD シールドを使ってLCD のバックライトとして使用されている LED の明るさがどの様に変わるかを試してみます。
まず始めに、「MCU タブ・パネル」でPWM 制御をするMCU の「Select Function」ポップアップ・メニューで「PWM Only」又は、「PWM + LCD」を選択します。今回は、LCD シールドを使って PWM の機能を試すので、「PWM + LCD」を選択します。
次に、「PWMタブパネル」を選択します。「PWMタブパネル」を選択すると、PWM 信号か出力されている時間を定義するためのスライダー・バーと、点滅を繰り返す周期を定義するためのスライダー・バーが変更可能な状態になっています。
又、「DIV_NUM」ポップアップメニューも選択可能な状態になっています。
PWM で一番始めに設定するのは、「DIV_NUM」ポップアップメニューです。「DIV_NUM」は、マイコンの中で時間を計測する目的の機能として搭載されているタイマーという機能を、どの様なスピードで動かすかの定義に使います。ポップアップメニューを開くと、1/1 ~1/1024 までの値が選択可能になっている事がわかります。分母が大きい方が PWM の周期が長くなります。今回は、1/1 を選択して周期を一番短くしましょう。
次に、設定するのが、2つあるスライド・バーのうちの 「Cycle time」スライド・バーです。このスライド・バーでは、点滅周期の微調整が出来ます。
もう1つのスライド・バーは、「Pulse Width」スライド・バーで、点灯している時間を設定出来ます。これらのスライド・バーをマウスでドラッグして表示されている数値がどの様に変化するのかを確かめてみましょう。動かしてみて、数字の値から、何となくどの様な信号が AVR マイコンから出力されるのかイメージがつきましたでしょうか ?
まだ、この段階では PWM の設定をしただけであるため、LCD の LED バックライトの明るさは変化しません。では実際に AVR マイコンから信号を出力させてみましょう。 PWM 機能を実際に動作させるためには、「Execute」ボタンを押します。2つあるスライド・バーを色々と変えてみて「Execute」ボタンを押し、どの様な明るさになるのか実験してみて下さい。実際に明るさと点滅のスピードが変わることで、より理解が深まるものと思います。
この様に「Easy MCUser」を使う事で、プログラムを組まずにマイコンが持っている機能を GUI で 操作し、AVR マイコンと接続されたデバイスを制御出来る様になります。そして、デバイスの機能や特性が簡単に試せる様になります。
「 PWM 」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルを参照して下さい。
目次へ戻る
【LCDへの表示のしかた】 ~~~~ 第3回 ~~~~
3-3. LCD に文字を表示させてみる
「3-2. LED の明るさを変えてみる」の項目では、 PWM の機能を使って明るさの変化を実際に体験してみました。今度は、明るさの制御に加えて LCD へ文字を表示してみる事にしましょう。LCD へ文字を表示するためには、「LCD」タブパネルから制御します。
「LCD」タブパネルを開くと、「LCD type」,「Cursor setting」,「Edit mode」という3つのポップアップメニューがあります。それぞれのポップアップメニューを順番に設定してゆきます。
「LCD type」ポップアップメニューには、今回 Arduino R3 互換ボードと接続する LCD シールドが 16 x 2 キャラクターの LCD ですので、「16 x 2」を選択します。
「Cursor setting」ポップアップメニューには、「Cursor on」を選択します。「Cursor on」を選択する事で、LDC 上で次に文字が表示される位置の下側に「 _ 」(アンダーバー)が表示される様になります。
「Edit mode」ポップアップメニューには、「Set immediately」を設定します。「Set immediately」は、十字ボタンを押したら、すぐに LCD 上に表示されるカーソルの位置が移動して反映されるモードです。ここまでで、LCD へ文字を表示するための準備が整いました。
次は、文字を LCD へ表示してみましょう。
まず、文字を表示したい位置にカーソルを移動します。十字キーでカーソルを移動した後で「Home」ボタンを押すと、一気に X=0 , Y=0 の位置へジャンプしますので、試してみみて下さい。
LCD へ文字を表示するためには、「Caracter List」ボックス中の任意の文字をマウスで選択して、「Set char」ボタンを押すだけです。
AVRMC が事前に提供する文字列が「Caracter List」ボックスに表示されています。この文字列は、実は「Easy MCUser」のフォルダー内にある、「LCD_character.txt」という ASCII ファイルの中身を読み込んで来ているのです。もし、ユーザーがこのファイルの中身をテキスト・エディターなどで編集すれば、任意の文字列をもっと追加する事が出来ます。
今回は、「Character List」ボックスの中の文字列 No.3 の「0123456789012345」を選択して、「Set char」ボタンを2回押してみましょう。LCD の表示が上段/下段とも「0123456789012345」が表示されていると思います。この様に、「Easy MCUser」を使えば、マウスの操作だけでLCD への文字の表示も簡単に出来ます。
「 LCD 」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのこちらのページを参照して下さい。
目次へ戻る
3-3. LCD に文字を表示させてみる
「3-2. LED の明るさを変えてみる」の項目では、 PWM の機能を使って明るさの変化を実際に体験してみました。今度は、明るさの制御に加えて LCD へ文字を表示してみる事にしましょう。LCD へ文字を表示するためには、「LCD」タブパネルから制御します。
「LCD」タブパネルを開くと、「LCD type」,「Cursor setting」,「Edit mode」という3つのポップアップメニューがあります。それぞれのポップアップメニューを順番に設定してゆきます。
「LCD type」ポップアップメニューには、今回 Arduino R3 互換ボードと接続する LCD シールドが 16 x 2 キャラクターの LCD ですので、「16 x 2」を選択します。
「Cursor setting」ポップアップメニューには、「Cursor on」を選択します。「Cursor on」を選択する事で、LDC 上で次に文字が表示される位置の下側に「 _ 」(アンダーバー)が表示される様になります。
「Edit mode」ポップアップメニューには、「Set immediately」を設定します。「Set immediately」は、十字ボタンを押したら、すぐに LCD 上に表示されるカーソルの位置が移動して反映されるモードです。ここまでで、LCD へ文字を表示するための準備が整いました。
次は、文字を LCD へ表示してみましょう。
まず、文字を表示したい位置にカーソルを移動します。十字キーでカーソルを移動した後で「Home」ボタンを押すと、一気に X=0 , Y=0 の位置へジャンプしますので、試してみみて下さい。
LCD へ文字を表示するためには、「Caracter List」ボックス中の任意の文字をマウスで選択して、「Set char」ボタンを押すだけです。
AVRMC が事前に提供する文字列が「Caracter List」ボックスに表示されています。この文字列は、実は「Easy MCUser」のフォルダー内にある、「LCD_character.txt」という ASCII ファイルの中身を読み込んで来ているのです。もし、ユーザーがこのファイルの中身をテキスト・エディターなどで編集すれば、任意の文字列をもっと追加する事が出来ます。
今回は、「Character List」ボックスの中の文字列 No.3 の「0123456789012345」を選択して、「Set char」ボタンを2回押してみましょう。LCD の表示が上段/下段とも「0123456789012345」が表示されていると思います。この様に、「Easy MCUser」を使えば、マウスの操作だけでLCD への文字の表示も簡単に出来ます。
「 LCD 」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのこちらのページを参照して下さい。
目次へ戻る
【ADC の使い方】 ~~~~ 第4回 ~~~~
3-4. AVR マイコンに入力されたアナログ電圧値を読み取る
AVR マイコンには、アナログ電圧値をデジタルのコードに変換するADC(Analog to Digital Converter)機能が内蔵されています。ADC は、AVR マイコンの中で唯一アナログ信号を扱える機能で、マイコンと外部で接続されるセンサーや電源などの状態を知ることが出来る大変便利な機能です。
ADC の機能を使う前に、まず、MCU のピン機能の設定をしましょう。下図は、スレーブ MCU に対するピン機能設定が終わって、スレーブNo.7を選択した状態です。Slave MCU PinMap の状態が、Select Function のままになっています。これは、特に特定の機能をピンにアサインしていないという事を意味します。ADC 機能を使う上で、特に今回は特別な機能を設定する必要は無いので、この様にしています。
ピン機能の設定が完了したら、ADC を実際に動かす事が出来ますので試してみましょう。
AVR マイコンに対して入力されるアナログ電圧値を「Easy MCUser」で読み取るためには、「Analog」タブパネルを使用します。
今回は、「3-3. LCD に文字を表示させてみる」の項目で使用した LCD シールドを使って、LCD シールドに搭載されたボタンと連動して AVR マイコンへ入力されるアナログ電圧値を AVR マイコンで読み取ってみましょう。
「Analog」タブパネルを開くと、「Select ADC channel」,「Start IREG No.」,「DIV_NUM」という3つのポップアップメニューがあります。これらのポップアップメニューを順番に設定してゆきます。
「Select ADC channel」ポップアップメニューには、今回 使用する Arduino R3 互換ボードと接続する LCD シールドの十字配列されたプッシュボタンに連動した抵抗が チャネル 0 につながっているので、「ADC channel 0」を選択します。
「Start IREG No.」ポップアップメニューには、ADC から読み取った電圧の値を一時的に保存しておくための場所(IREG : Internal Register)の番号を設定します。ADC から読み取った電圧の値は、AVR マイコンの場合は10[bit]幅のため、必ずIREG を2つ使ってデータが格納されます。今回は、「IREG0」を選択しますが、この時、IREG0には上位2[bit]のデータが格納され、IREG1には下位の8[bit]のデータが格納されます。
「DIV_NUM」ポップアップメニューには、「PWM」の制御で使用した「DIV_NUM」と同様に、マイコンの中で時間を計測する目的の機能として搭載されているタイマーという機能を、どの様なスピードで動かすかの定義に使います。ポップアップメニューを開くと、1/1 ~1/1024 までの値が選択可能になっている事がわかります。分母が大きい方がアナログ電圧値をサンプリングする周期が長くなります。今回は、1/8 を選択します。
それと、「Burst」ラジオボタンを ON します。このラジオボタンを ON する事で、指定の回数とサンプリング周期でアナログ電圧値を取得します。
その他の設定については、今回は特に変更する必要はありません。このままの設定で、「EXECUTE」ボタンを押して、まずはアナログ電圧値をデジタル値へ変換して IREG へ一時保管するところまでを実行してみます。
「EXECUTE」ボタンを押して、 IREG へデジタル値を一時保管したら、次に、一時保管したその値を IREG から読み出してみましょう。IREG から一時保管したデータを読み出すには、「REGs」タブ・パネルを選択します。先ほど「Start IREG No.」ポップアップメニューで IREG0 を選択したので、IREG0 とIREG1 からデータを読み出しましょう。
ここで、IREG とのデータのやりとりの仕方について簡単に説明します。
まずは、アクセスしたい IREG の番号にあるチェック・ボックスへチェックを入れます。同時にチェックを入れられる数は16までとなりますが、今回は IREG0 と IREG1 の2つのみとなります。チェック・ボックスへチェックを入れた IREG の横にあるテキストボックスは、書き込み,又は表示が可能な状態になります。
チェック・ボックスへチェックを入れ終わったら、次に、「Select : W/R」ポップアップメニューから、「Read IREG」を選択します。この「Select : W/R」ポップアップメニューでは、IREG に対してデータの書き込み(Write : ライト動作)と、IREG からデータの読み出し(Read : リード動作)のどちらの動作を実行するのかを定義します。
「Select : W/R」の設定をリードにしたら、次に、「EXECUTE」ボタンを押します。すると、ADC からデジタル値として AVR マイコンから読み出されたデータが IREG0 と IREG1 のテキストボックスに表示されます。 IREG0 と IREG1 のテキストボックスに表示された値は16進数です。
以下の図は、十字キーを順番に押してADC でアナログ電圧をデジタル値へ変換したものとなります。4種類のキーは、それぞれ異なった16進数の値になっています。この事を利用して、どのキーが押されているのかの判定に使う事が出来る様になります。
表示された値はどの様な値になっていたでしょうか?試しに、 LCD シールドのセレクト・ボタン及び十字配列されたプッシュボタンを押した状態で、ADC でアナログ電圧値をデジタル値へ変換したものを IREG へ一時保管して、そのデータを読み出してみましょう。値が変わっていると思います。
ここまでの操作で、ADC からアナログ電圧値をデジタル値に変換したデータを読み出す事が出来ました。
「Analog」タブ・パネルと「REGs」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのこちらのページ(「Analog」,「REGs」)を参照して下さい。
目次へ戻る
3-4. AVR マイコンに入力されたアナログ電圧値を読み取る
AVR マイコンには、アナログ電圧値をデジタルのコードに変換するADC(Analog to Digital Converter)機能が内蔵されています。ADC は、AVR マイコンの中で唯一アナログ信号を扱える機能で、マイコンと外部で接続されるセンサーや電源などの状態を知ることが出来る大変便利な機能です。
ADC の機能を使う前に、まず、MCU のピン機能の設定をしましょう。下図は、スレーブ MCU に対するピン機能設定が終わって、スレーブNo.7を選択した状態です。Slave MCU PinMap の状態が、Select Function のままになっています。これは、特に特定の機能をピンにアサインしていないという事を意味します。ADC 機能を使う上で、特に今回は特別な機能を設定する必要は無いので、この様にしています。
ピン機能の設定が完了したら、ADC を実際に動かす事が出来ますので試してみましょう。
AVR マイコンに対して入力されるアナログ電圧値を「Easy MCUser」で読み取るためには、「Analog」タブパネルを使用します。
今回は、「3-3. LCD に文字を表示させてみる」の項目で使用した LCD シールドを使って、LCD シールドに搭載されたボタンと連動して AVR マイコンへ入力されるアナログ電圧値を AVR マイコンで読み取ってみましょう。
「Analog」タブパネルを開くと、「Select ADC channel」,「Start IREG No.」,「DIV_NUM」という3つのポップアップメニューがあります。これらのポップアップメニューを順番に設定してゆきます。
「Select ADC channel」ポップアップメニューには、今回 使用する Arduino R3 互換ボードと接続する LCD シールドの十字配列されたプッシュボタンに連動した抵抗が チャネル 0 につながっているので、「ADC channel 0」を選択します。
「Start IREG No.」ポップアップメニューには、ADC から読み取った電圧の値を一時的に保存しておくための場所(IREG : Internal Register)の番号を設定します。ADC から読み取った電圧の値は、AVR マイコンの場合は10[bit]幅のため、必ずIREG を2つ使ってデータが格納されます。今回は、「IREG0」を選択しますが、この時、IREG0には上位2[bit]のデータが格納され、IREG1には下位の8[bit]のデータが格納されます。
「DIV_NUM」ポップアップメニューには、「PWM」の制御で使用した「DIV_NUM」と同様に、マイコンの中で時間を計測する目的の機能として搭載されているタイマーという機能を、どの様なスピードで動かすかの定義に使います。ポップアップメニューを開くと、1/1 ~1/1024 までの値が選択可能になっている事がわかります。分母が大きい方がアナログ電圧値をサンプリングする周期が長くなります。今回は、1/8 を選択します。
それと、「Burst」ラジオボタンを ON します。このラジオボタンを ON する事で、指定の回数とサンプリング周期でアナログ電圧値を取得します。
その他の設定については、今回は特に変更する必要はありません。このままの設定で、「EXECUTE」ボタンを押して、まずはアナログ電圧値をデジタル値へ変換して IREG へ一時保管するところまでを実行してみます。
「EXECUTE」ボタンを押して、 IREG へデジタル値を一時保管したら、次に、一時保管したその値を IREG から読み出してみましょう。IREG から一時保管したデータを読み出すには、「REGs」タブ・パネルを選択します。先ほど「Start IREG No.」ポップアップメニューで IREG0 を選択したので、IREG0 とIREG1 からデータを読み出しましょう。
ここで、IREG とのデータのやりとりの仕方について簡単に説明します。
まずは、アクセスしたい IREG の番号にあるチェック・ボックスへチェックを入れます。同時にチェックを入れられる数は16までとなりますが、今回は IREG0 と IREG1 の2つのみとなります。チェック・ボックスへチェックを入れた IREG の横にあるテキストボックスは、書き込み,又は表示が可能な状態になります。
チェック・ボックスへチェックを入れ終わったら、次に、「Select : W/R」ポップアップメニューから、「Read IREG」を選択します。この「Select : W/R」ポップアップメニューでは、IREG に対してデータの書き込み(Write : ライト動作)と、IREG からデータの読み出し(Read : リード動作)のどちらの動作を実行するのかを定義します。
「Select : W/R」の設定をリードにしたら、次に、「EXECUTE」ボタンを押します。すると、ADC からデジタル値として AVR マイコンから読み出されたデータが IREG0 と IREG1 のテキストボックスに表示されます。 IREG0 と IREG1 のテキストボックスに表示された値は16進数です。
以下の図は、十字キーを順番に押してADC でアナログ電圧をデジタル値へ変換したものとなります。4種類のキーは、それぞれ異なった16進数の値になっています。この事を利用して、どのキーが押されているのかの判定に使う事が出来る様になります。
表示された値はどの様な値になっていたでしょうか?試しに、 LCD シールドのセレクト・ボタン及び十字配列されたプッシュボタンを押した状態で、ADC でアナログ電圧値をデジタル値へ変換したものを IREG へ一時保管して、そのデータを読み出してみましょう。値が変わっていると思います。
ここまでの操作で、ADC からアナログ電圧値をデジタル値に変換したデータを読み出す事が出来ました。
「Analog」タブ・パネルと「REGs」タブ・パネルには他にも色々な機能がありますが、詳細についてはユーザーズ・マニュアルのこちらのページ(「Analog」,「REGs」)を参照して下さい。
目次へ戻る
【SPIの通信制御】 ~~~~ 第5回 ~~~~
4-1. マイコンから他のデバイスへデータを送る(SPIの通信制御)
AVR マイコンには、他のマイコンやセンサー・デバイスと通信をするための機能があります。その中の一つとして、 SPI(Serial Peripheral Interface)と呼ばれているインターフェースがあります。多くのデバイスは、この SPI インターフェースを持っているため、このインターフェースを使いこなす事で、様々なデバイスを制御する事が可能になります。しかしながら、SPI を動かすためにユーザーがしなければならないプログラミングがあるため、一般的な開発言語で開発をするとなると、それなりの知識が必要になり、通信が確立できるまでが大変でした。「Easy MCUser」を使えば、この部分をスキップして、すぐに AVR マイコンと外部接続するデバイスを制御する事に集中して目的を達成出来ます。
では、実際に SPI 機能を使ってみましょう。
まず、「SPI/I2C」タブパネルを選択します。「SPI/I2C」タブパネルを選択すると、「Data oder」,「Clock Polarity」,「Clock Phase」,「Clock frequency」という設定項目があります。これらは、SPI 通信を行うためにすべき設定項目となります。
上記4つの設定項目は、AVR マイコンと接続するデバイスに合わせて設定をする事になります。
これらの項目についての詳細については、ユーザーズ・マニュアルのこちらのページを参照して下さい。
次に、これらの設定が終わったら、いよいよデータの送受信となります。
「Transfer data」の中で設定するデータの場所として、一時保存されたデータとして、どのIREG 番号から順番にデータを送るのかを「Start IREG No.」ポップアップ・メニューから設定します。
「Start IREG No.」の設定が終わったら、「Trans. count」ポップアップ・メニューから送りたいデータの数(=バイト数)を設定します。
「Trans. count」ポップアップ・メニューから送りたいデータの数を設定したら、データ設定テキスト・ボックスへ左から順番に送信したいデータを入力します。
データの入力が完了したら、「Execute」ボタンを押します。これで、データの送受信が完了します。受信したデータは、「Start IREG No.」で設定した番号のレジスタに一時保存されています。SPI 通信は、外部に接続されたデバイスへデータを送信するのと同時に外部に接続されたデバイスからデータを読み出されるので、外部デバイスから受け取ったデータを読み出したい場合は、IREG を読み出してみましょう。IREG に保存されたデータの読み出しは、前項目の「Analog」タブ・パネルで行った方法で実施します。
これで、SPI 通信による外部デバイスとのデータのやりとりが出来る様になりました。
USB 経由で PC から SPI インターフェースで動作するデバイスを制御するためだけの目的で数万円する製品が販売されていますが、「Easy MCUser」を使えばリーズナブルに SPI インターフェースを備えたデバイスとつないで、例えば IoT デバイスの機能や特性の評価といった目的にも使う事が出来ます。
目次へ戻る
4-1. マイコンから他のデバイスへデータを送る(SPIの通信制御)
AVR マイコンには、他のマイコンやセンサー・デバイスと通信をするための機能があります。その中の一つとして、 SPI(Serial Peripheral Interface)と呼ばれているインターフェースがあります。多くのデバイスは、この SPI インターフェースを持っているため、このインターフェースを使いこなす事で、様々なデバイスを制御する事が可能になります。しかしながら、SPI を動かすためにユーザーがしなければならないプログラミングがあるため、一般的な開発言語で開発をするとなると、それなりの知識が必要になり、通信が確立できるまでが大変でした。「Easy MCUser」を使えば、この部分をスキップして、すぐに AVR マイコンと外部接続するデバイスを制御する事に集中して目的を達成出来ます。
では、実際に SPI 機能を使ってみましょう。
まず、「SPI/I2C」タブパネルを選択します。「SPI/I2C」タブパネルを選択すると、「Data oder」,「Clock Polarity」,「Clock Phase」,「Clock frequency」という設定項目があります。これらは、SPI 通信を行うためにすべき設定項目となります。
上記4つの設定項目は、AVR マイコンと接続するデバイスに合わせて設定をする事になります。
これらの項目についての詳細については、ユーザーズ・マニュアルのこちらのページを参照して下さい。
次に、これらの設定が終わったら、いよいよデータの送受信となります。
「Transfer data」の中で設定するデータの場所として、一時保存されたデータとして、どのIREG 番号から順番にデータを送るのかを「Start IREG No.」ポップアップ・メニューから設定します。
「Start IREG No.」の設定が終わったら、「Trans. count」ポップアップ・メニューから送りたいデータの数(=バイト数)を設定します。
「Trans. count」ポップアップ・メニューから送りたいデータの数を設定したら、データ設定テキスト・ボックスへ左から順番に送信したいデータを入力します。
データの入力が完了したら、「Execute」ボタンを押します。これで、データの送受信が完了します。受信したデータは、「Start IREG No.」で設定した番号のレジスタに一時保存されています。SPI 通信は、外部に接続されたデバイスへデータを送信するのと同時に外部に接続されたデバイスからデータを読み出されるので、外部デバイスから受け取ったデータを読み出したい場合は、IREG を読み出してみましょう。IREG に保存されたデータの読み出しは、前項目の「Analog」タブ・パネルで行った方法で実施します。
これで、SPI 通信による外部デバイスとのデータのやりとりが出来る様になりました。
USB 経由で PC から SPI インターフェースで動作するデバイスを制御するためだけの目的で数万円する製品が販売されていますが、「Easy MCUser」を使えばリーズナブルに SPI インターフェースを備えたデバイスとつないで、例えば IoT デバイスの機能や特性の評価といった目的にも使う事が出来ます。
目次へ戻る
【GUI 操作の録画,編集,保存,再生】 ~~~~ 第6回 ~~~~
4-2. GUI 操作を録画データ(スクリプト)として一時保存する
前回までの基本機能が使いこなせる様になってくると、もっと色々な事がしたくなって来るものと思います。その中には、マウスで操作した事を又、同じ様に実行したいという事も出てくると思います。それを実現するために、まず操作を録画して一時保存する必要があります。今回は、この録画機能から再生機能まで順番に説明をします。
録画機能を使って実行した操作を録画するためには、録画する操作を実行する前に「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「○」ボタンを押します。
後は、GUI による操作をすれば、自動的に録画された操作は、スクリプトと呼ばれる文字列となって「スクリプト・リスト・ボックス」に一時的に保存されます。録画を終了する場合は、「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロールの「||」ボタンを押します。
「スクリプト・リスト・ボックス」は、「Easy MCUser」を立ち上げた状態では隠れているので、録画した操作がスクリプトとなって一時保存されている事を「スクリプト・リスト・ボックス」を表示して確認してみましょう。「スクリプト・リスト・ボックス」を表示/非表示するには、画面右側の上にある「表示/非表示」ボタンをクリックします。ボタンを押すごとに「スクリプト・リスト・ボックス」を表示/非表示する事が出来ます。
4-3. 一時保存した録画データ(スクリプト)を使って GUI 操作を再生する
「4-2. GUI 操作を録画データ(スクリプト)として一時保存する」の項目では、スクリプトとして一時保存してみました。今度は、この一時保存されたスクリプトを使って、スクリプトを再生してみましょう。
録画されたスクリプトを再生するためには、「Script Rec. / Play control」フィールドの中で右側にあるセグメント・コントロールをマウスで操作します。操作をする前に、まず再生制御用のセグメント・コントロールの
ボタンの機能について説明をします。
「||」ボタンは、実行中のスクリプトを停止する時に使用します。ごくまれに、無限ループの速度が速すぎてマウス操作を受け付けられない状態になる事があります。もし、その様な状態になった場合は、Windows 版の場合は、「Esc」キーを押してみて下さい。Mac 版の場合は、「command + .」を実行して(=コマンド・キーとピリオド・キーを同時に押して)みて下さい。
「|←」ボタンは、実行する行を先頭行に戻します。
「>>」ボタンは、実行する先頭行から実行可能な最後の行まで一気にスクリプトを実行します。
「>!」ボタンは、現在実行が終わっている行からブレーク・ポイントがある行まで一気にスクリプトを実行します。ブレーク・ポイントの指定は、「スクリプト・リスト・ボックス」の中に一時保存されたスクリプトをマウスでクリックして、「Break」ポップアップ・メニューから「On」を選択する事で、その行のスクリプトを実行すると、ブレーク(=一時停止)出来る様になります。
「>」ボタンは、現在実行が終わっている行から次の行へ移動して1行だけスクリプトを実行します。
「↺」ボタンは、「>>」ボタンで実行可能な全ての行を「Times」テキストボックスで指定された回数だけ、繰り返し実行します。(「Times」テキストボックスの初期値は"10"となっています。)
4-4. 録画データ(スクリプト)を再利用するため、ファイルへ保存する
「4-2. 操作した手順を録画データ(スクリプト)として一時保存する」の項目で、一時保存したスクリプトを、いつでも呼び出して再利用出来る様にファイルへ保存してみましょう。
ファイルへ保存するためには、「Select : ReLabel / Save / Remove」ポップアップ・メニューから「ReLabel and Save」を選択します。すると、ファイルの保存先とファイル名を指定するためのウインドーが表示されます。基本的には、「Easy MCUser」があるフォルダーの中に、「Scripts」という名称のフォルダーがありますので、ここにファイル名を決めて保存して下さい。これで、スクリプトの保存が出来ました。
4-5. ファイルに保存された録画データ(スクリプト)を呼び出す
「4-4. 録画データ(スクリプト)を再利用するため、ファイルへ保存する」の項目で保存したスクリプトを呼び出すには、「Load Script」ボタンを押します。「Load Script」ボタンを押すと、呼び出すスクリプトを選択するためのウインドーが表示されます。ウインドーの中から呼び出したいスクリプト・ファイルを選択して、「追加」ボタンを押します。すると、「スクリプト・リスト・ボックス」の中に呼び出したスクリプト・ファイルが一時保存した状態と同じ状態で表示されます。
ここで、「|←」ボタンを押して、実行する先頭行に飛ばせば、「>>」,「>!」,「>」,「↺」ボタンでスクリプトの再生が出来ます。
4-6. GUI 操作を既にある録画データ(スクリプト)に追加する
「4-2. GUI 操作を録画データ(スクリプト)として一時保存する」では、「スクリプト・リスト・ボックス」の中身が、まっさらな状態で GUI 操作を録画する方法をご紹介しました。
今回は、一度「スクリプト・リスト・ボックス」に一時保存された状態で、その中の任意の行にGUI 操作をした結果を録画するという事をやってみましょう。
まず、「スクリプト・リスト・ボックス」にスクリプトが存在する状態にします。
この状態で、GUI 操作によって生成されるスクリプトの挿入場所を指定します。スクリプトを挿入したい場所を指定するために、「スクリプト・リスト・ボックス」の任意のスクリプトをマウスでクリックします。これで、マウスでクリックした行の次の行がスクリプトの挿入される行として「Easy MCUser」に認識されます。
次に、「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「◎」ボタンを押します。このボタンは、録画の開始をするボタンです。後は、GUI 操作をすれば、先ほど「スクリプト・リスト・ボックス」でクリックした次の行以降へGUI 操作によって生成されたスクリプトが順番に挿入されてゆきます。このボタンの隣にある「||」ボタンは録画の停止をするためのボタンです。「◎」ボタンが押されてから、「||」ボタンが押されるまでの間、GUI 操作によって生成されたスクリプトが蓄積されます。
4-7. 録画データ(スクリプト)に別の録画データ(スクリプト)を挿入/連結する
この操作も、「4-6. GUI 操作を既にある録画データ(スクリプト)に追加する」で説明をしたのと同様に、まず、「スクリプト・リスト・ボックス」にスクリプトが存在する状態にします。この状態で、GUI 操作を挿入したい場所の指定をします。「スクリプト・リスト・ボックス」の任意のスクリプトをマウスでクリックします。これで、マウスでクリックした行の次の行がスクリプトの挿入される行として認識されます。
次に、「Load Script」ボタンを押します。「Load Script」ボタンを押すと、呼び出すスクリプトを選択するためのウインドーが表示されます。ウインドーの中から呼び出したいスクリプト・ファイルを選択して、「追加」ボタンを押します。すると、先ほど「スクリプト・リスト・ボックス」の中でマウス・クリックで指定した行の次の行に呼び出したスクリプト・ファイルが挿入されます。
今回の説明で、「Easy MCUser」の機能である、録画,編集,保存,再生…によってマイコンを制御するといったコンセプトと、その操作方法がご理解頂けたと思います。「~~~~ 第6回 ~~~~」までの説明で、殆どの機能の説明が終わりました。
後はもっと高度で複雑な事をしたい時に必要な、「繰り返し制御」と「条件分岐制御」の説明を残すのみとなります!
目次へ戻る
4-2. GUI 操作を録画データ(スクリプト)として一時保存する
前回までの基本機能が使いこなせる様になってくると、もっと色々な事がしたくなって来るものと思います。その中には、マウスで操作した事を又、同じ様に実行したいという事も出てくると思います。それを実現するために、まず操作を録画して一時保存する必要があります。今回は、この録画機能から再生機能まで順番に説明をします。
録画機能を使って実行した操作を録画するためには、録画する操作を実行する前に「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「○」ボタンを押します。
後は、GUI による操作をすれば、自動的に録画された操作は、スクリプトと呼ばれる文字列となって「スクリプト・リスト・ボックス」に一時的に保存されます。録画を終了する場合は、「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロールの「||」ボタンを押します。
「スクリプト・リスト・ボックス」は、「Easy MCUser」を立ち上げた状態では隠れているので、録画した操作がスクリプトとなって一時保存されている事を「スクリプト・リスト・ボックス」を表示して確認してみましょう。「スクリプト・リスト・ボックス」を表示/非表示するには、画面右側の上にある「表示/非表示」ボタンをクリックします。ボタンを押すごとに「スクリプト・リスト・ボックス」を表示/非表示する事が出来ます。
4-3. 一時保存した録画データ(スクリプト)を使って GUI 操作を再生する
「4-2. GUI 操作を録画データ(スクリプト)として一時保存する」の項目では、スクリプトとして一時保存してみました。今度は、この一時保存されたスクリプトを使って、スクリプトを再生してみましょう。
録画されたスクリプトを再生するためには、「Script Rec. / Play control」フィールドの中で右側にあるセグメント・コントロールをマウスで操作します。操作をする前に、まず再生制御用のセグメント・コントロールの
ボタンの機能について説明をします。
「||」ボタンは、実行中のスクリプトを停止する時に使用します。ごくまれに、無限ループの速度が速すぎてマウス操作を受け付けられない状態になる事があります。もし、その様な状態になった場合は、Windows 版の場合は、「Esc」キーを押してみて下さい。Mac 版の場合は、「command + .」を実行して(=コマンド・キーとピリオド・キーを同時に押して)みて下さい。
「|←」ボタンは、実行する行を先頭行に戻します。
「>>」ボタンは、実行する先頭行から実行可能な最後の行まで一気にスクリプトを実行します。
「>!」ボタンは、現在実行が終わっている行からブレーク・ポイントがある行まで一気にスクリプトを実行します。ブレーク・ポイントの指定は、「スクリプト・リスト・ボックス」の中に一時保存されたスクリプトをマウスでクリックして、「Break」ポップアップ・メニューから「On」を選択する事で、その行のスクリプトを実行すると、ブレーク(=一時停止)出来る様になります。
「>」ボタンは、現在実行が終わっている行から次の行へ移動して1行だけスクリプトを実行します。
「↺」ボタンは、「>>」ボタンで実行可能な全ての行を「Times」テキストボックスで指定された回数だけ、繰り返し実行します。(「Times」テキストボックスの初期値は"10"となっています。)
4-4. 録画データ(スクリプト)を再利用するため、ファイルへ保存する
「4-2. 操作した手順を録画データ(スクリプト)として一時保存する」の項目で、一時保存したスクリプトを、いつでも呼び出して再利用出来る様にファイルへ保存してみましょう。
ファイルへ保存するためには、「Select : ReLabel / Save / Remove」ポップアップ・メニューから「ReLabel and Save」を選択します。すると、ファイルの保存先とファイル名を指定するためのウインドーが表示されます。基本的には、「Easy MCUser」があるフォルダーの中に、「Scripts」という名称のフォルダーがありますので、ここにファイル名を決めて保存して下さい。これで、スクリプトの保存が出来ました。
4-5. ファイルに保存された録画データ(スクリプト)を呼び出す
「4-4. 録画データ(スクリプト)を再利用するため、ファイルへ保存する」の項目で保存したスクリプトを呼び出すには、「Load Script」ボタンを押します。「Load Script」ボタンを押すと、呼び出すスクリプトを選択するためのウインドーが表示されます。ウインドーの中から呼び出したいスクリプト・ファイルを選択して、「追加」ボタンを押します。すると、「スクリプト・リスト・ボックス」の中に呼び出したスクリプト・ファイルが一時保存した状態と同じ状態で表示されます。
ここで、「|←」ボタンを押して、実行する先頭行に飛ばせば、「>>」,「>!」,「>」,「↺」ボタンでスクリプトの再生が出来ます。
4-6. GUI 操作を既にある録画データ(スクリプト)に追加する
「4-2. GUI 操作を録画データ(スクリプト)として一時保存する」では、「スクリプト・リスト・ボックス」の中身が、まっさらな状態で GUI 操作を録画する方法をご紹介しました。
今回は、一度「スクリプト・リスト・ボックス」に一時保存された状態で、その中の任意の行にGUI 操作をした結果を録画するという事をやってみましょう。
まず、「スクリプト・リスト・ボックス」にスクリプトが存在する状態にします。
この状態で、GUI 操作によって生成されるスクリプトの挿入場所を指定します。スクリプトを挿入したい場所を指定するために、「スクリプト・リスト・ボックス」の任意のスクリプトをマウスでクリックします。これで、マウスでクリックした行の次の行がスクリプトの挿入される行として「Easy MCUser」に認識されます。
次に、「Script Rec. / Play control」フィールドの中で左側にあるセグメント・コントロール・ボタンの「◎」ボタンを押します。このボタンは、録画の開始をするボタンです。後は、GUI 操作をすれば、先ほど「スクリプト・リスト・ボックス」でクリックした次の行以降へGUI 操作によって生成されたスクリプトが順番に挿入されてゆきます。このボタンの隣にある「||」ボタンは録画の停止をするためのボタンです。「◎」ボタンが押されてから、「||」ボタンが押されるまでの間、GUI 操作によって生成されたスクリプトが蓄積されます。
4-7. 録画データ(スクリプト)に別の録画データ(スクリプト)を挿入/連結する
この操作も、「4-6. GUI 操作を既にある録画データ(スクリプト)に追加する」で説明をしたのと同様に、まず、「スクリプト・リスト・ボックス」にスクリプトが存在する状態にします。この状態で、GUI 操作を挿入したい場所の指定をします。「スクリプト・リスト・ボックス」の任意のスクリプトをマウスでクリックします。これで、マウスでクリックした行の次の行がスクリプトの挿入される行として認識されます。
次に、「Load Script」ボタンを押します。「Load Script」ボタンを押すと、呼び出すスクリプトを選択するためのウインドーが表示されます。ウインドーの中から呼び出したいスクリプト・ファイルを選択して、「追加」ボタンを押します。すると、先ほど「スクリプト・リスト・ボックス」の中でマウス・クリックで指定した行の次の行に呼び出したスクリプト・ファイルが挿入されます。
今回の説明で、「Easy MCUser」の機能である、録画,編集,保存,再生…によってマイコンを制御するといったコンセプトと、その操作方法がご理解頂けたと思います。「~~~~ 第6回 ~~~~」までの説明で、殆どの機能の説明が終わりました。
後はもっと高度で複雑な事をしたい時に必要な、「繰り返し制御」と「条件分岐制御」の説明を残すのみとなります!
目次へ戻る
【繰り返し制御】 ~~~~ 第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」を使えば、ちょっとした操作で簡単に繰り返し処理が実現出来ます。
目次へ戻る
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」を使えば、ちょっとした操作で簡単に繰り返し処理が実現出来ます。
目次へ戻る
【条件分岐制御】 ~~~~ 第8回 ~~~~
4-9. IREG と TREG の状態によってマイコンの動きを変える(条件分岐制御)
今回の説明は、今まで GUI で実行してきた一連の操作を、繰り返し実行させたい時に役立つ使い方の第2段です。
「3-4. AVR マイコンに入力されたアナログ電圧値を読み取る」の項目で使用した、LCD シールドに搭載されたボタンの押下状態を検出して、LCD のバックライト LED の明るさを変える…という機能を実現してみたいと思います。この機能が実現出来れば、センサーなどのから取得したデータの値によってPC からマイコンを制御する事が出来る様になります。
実現する機能の仕様を簡単に示します。Easy MCUser を使って、以下の動作を実現してみましょう。
1.LCD バックライト LED は、「Up」ボタンで明かるくなる
2.LCD バックライト LED は、「Down」ボタンで暗くなる
3.プログラムは、「Select」ボタンを押下されると停止する
今回は、使用する「スクリプト(=命令)」を素材・ヒントとして示しますので、ヒントを参考に自作をしてみましょう。
素材となるスクリプトは、→こちらから「ダウンロード」(まずは、こちらをベースに試行錯誤してみましょう。)
答えの例のスクリプトは、→こちらから「ダウンロード」(時間のない方、ちょっと難しかった方は他の人の作ったスクリプトでどんどん知識とアイデアを吸収しましょう。)
目次へ戻る
4-9. IREG と TREG の状態によってマイコンの動きを変える(条件分岐制御)
今回の説明は、今まで GUI で実行してきた一連の操作を、繰り返し実行させたい時に役立つ使い方の第2段です。
「3-4. AVR マイコンに入力されたアナログ電圧値を読み取る」の項目で使用した、LCD シールドに搭載されたボタンの押下状態を検出して、LCD のバックライト LED の明るさを変える…という機能を実現してみたいと思います。この機能が実現出来れば、センサーなどのから取得したデータの値によってPC からマイコンを制御する事が出来る様になります。
実現する機能の仕様を簡単に示します。Easy MCUser を使って、以下の動作を実現してみましょう。
1.LCD バックライト LED は、「Up」ボタンで明かるくなる
2.LCD バックライト LED は、「Down」ボタンで暗くなる
3.プログラムは、「Select」ボタンを押下されると停止する
今回は、使用する「スクリプト(=命令)」を素材・ヒントとして示しますので、ヒントを参考に自作をしてみましょう。
素材となるスクリプトは、→こちらから「ダウンロード」(まずは、こちらをベースに試行錯誤してみましょう。)
答えの例のスクリプトは、→こちらから「ダウンロード」(時間のない方、ちょっと難しかった方は他の人の作ったスクリプトでどんどん知識とアイデアを吸収しましょう。)
目次へ戻る