画面調整用プログラムはarduinoに実装します。その動作は、先に挙げた図2の(127,127)、(−128,127)、(127,−128)、(−128,128)そして(127,127)へと戻り、複素平面の頂点を時計回りにオシロスコープの輝点が1秒ごとに巡回するというものです。
ここでは「analogWrite(pin,value)」という関数をつかいます。これは、PWM(パルス幅変調)という仕組みを使って、0〜5Vの電圧を256単位で出力することができます。ですからvalueの値は0から255ということになります。また第1引数はArduinoのどのピンを使うか指定するものですが、Arduinoの機種によって異なる場合がありますので、そこはお使いのArduinoボードで調べてみてください。筆者は「Arduino nano」を使っているので5番ピンと6番ピンを使っています。
analogWriteは、PWMでアナログ出力を行っているのですが、PWMはパルスの山と谷の比率を変えることにより疑似的にアナログ電圧を出力する仕組みなので、オシロスコープのように反応速度が速い装置で波形を見る場合はフィルターが必要です。
PWMの出力をきれいなアナログ信号に整形するためには図3のようなフィルターが必要です。
今回は、抵抗Rが24kΩ、そしてコンデンサーCは3.3μFの値を用いました。Arduinoのアナログ出力ピンである5番あるいは6番ピンを、オシロスコープの入力チャンネル1とチャンネル2の間にそれぞれ挟んで使います。
以下のリスト1はオシロスコープの画面調整用プログラムです。
void setup(){
}
void loop(){
analogWrite(5,0);
analogWrite(6,0);
delay(1000);
analogWrite(5,255);
analogWrite(6,0);
delay(1000);
analogWrite(5,255);
analogWrite(6,255);
delay(1000);
analogWrite(5,0);
analogWrite(6,255);
delay(1000);
}
リスト1は、各頂点を1秒間隔で巡回して繰り返すプログラムになっています。ここで注意していただきたいのはanalogWriteの第2引数で、0が複素平面の−128になっているところです。また第2引数の255は複素平面では127となります。
analogWriteで出力される電圧は0〜5Vとなります。5番ピンに虚部、そして6番ピンに実部が電圧に変換されて出力されます。5番ピンはオシロスコープのチャンネル1にそして6番ピンはチャンネル2に接続します。
図4はオシロスコープの操作パネルです。表示した図形を上下させるにはCH1のPOSITIONのノブを、図形を縦方向に伸縮させるにはCH1のVOLTS/DIVの内側のノブを、図形を左右に移動させるにはHORIZONTALのPOSITIONのノブを、図形を横方向に伸縮させるにはCH2のVOLT/DIVの内側のノブを調整します。
リスト2は指定した虚部と実部を複素平面に映し出すプログラムです。
signed char i = 64;
signed char r = -32;
void setup(){
analogWrite(5,i+128);
analogWrite(6,r+128);
}
void loop(){}
1行目で虚部の値を変数iに代入しています。変数はsigned charで、値がとり得る範囲は−128〜127です。虚部のiに代入される値は64です。次は実部の値を変数rに代入しています。値は-32です。
5行目ではanalogWriteを用いて虚数部の値のアナログ値を5番ピンに出力しています。第2引数でi+128としているのは、analogWriteが扱える値である0〜255に変換するためです。6行目では同様にanalogWriteを用いて実部の値をアナログ変換して6番ピンに出力しています。
図5は、リスト2のプログラムとオシロスコープによって、複素平面上に指定した複素数を表示させた状態です。
原点から縦方向の上側に2マス、256を8分割しているので1マスは32になるので、虚数部の64を表していることが分かります。横方向では左に1マスなので、実部の−32が画面に反映されていることが分かります。
いかがだったでしょうか。オシロスコープを用いると数式を使わなくても複素数と複素平面を説明できたとは思いませんか。もし虚数や複素数に対する皆さんの苦手感を払拭できたとしたら幸いです。
年代物のアナログオシロでベクタースキャンディスプレイを再現する
コイルを用いた実験回路で微分積分の本質に迫る【積分編】
コイルを用いた実験回路で微分積分の本質に迫る【微分編】
ベクタースキャンディスプレイとは
コンデンサーを用いた実験回路で微分積分の本質に迫る【積分編】Copyright © ITmedia, Inc. All Rights Reserved.
組み込み開発の記事ランキング
コーナーリンク