フリマアプリでFX-マイコンR-165を入手したので、紹介する。
FXといっても、これで有り金全部溶かすのは難しそうである。
外観
まずは外箱。
ブロックをならべるだけで65種類の電気実験と
100種類のマイコン実験ができます。
とあるが、マイコン実験を行うにはブロックをならべるだけではなくプログラムを入力する必要があるため、これは不適切という印象がある。
ここで、「電気実験でも、ブロックをならべるだけではなく、キーの操作や光などの入力を与える必要がある」という考え方もあるかもしれない。
しかし、これらの入力操作は、「電気実験」の一部であると考えられ、ブロックをならべるのは「電気実験の準備」であると考えられる。
これをマイコン実験に当てはめると、プログラムの入力はブロックをならべるのに相当する「実験の準備」であり、プログラムを実行してキーなどの入力操作を行うのは「マイコン実験」の一部だろう。
ブロックをならべるだけでできるといえるのは、65種類に「マイコン実験」という1種類を加えた66種類かもしれない。
そうなると、この「マイコン実験」1種類を「100種類のマイコン実験」という名前で呼んでいる、と考えれば、まあギリギリ間違いではないかもしれない。
箱を開けると、
- 本体 + ブロック、CDSユニット
- 本体に入り切らないブロック
- ケーブル数本
- 電池保管用スペース
- 追加パーツ保管用スペース
が見える。
さらに、本体の下には、
- 説明書2冊 (基礎実験、プログラム集)
- 命令記号早見表 (下敷き型)
- プリント (FX-SYSTEMの特徴、ブロックの規格と値段の表、友の会の宣伝、保証書)
- 払込用紙
が入っていた。
本体の裏には電池ボックスがあり、単3電池6本を用いて9Vで動かす仕様になっている。
マイコンユニット本体。
「MP1312 MSL△8127」というICが使われているようだ。
電源の入力と音声の出力は、本体に接続して本体の機能を使う仕組みのようである。
実際に電源を入れてLEDを光らせてみた様子。
(このような光の様子は、写真だとうまく伝わりにくいが…)
使用感
良かった点
プログラムの入力が快適
GMC-4では、シートを用いた簡易キーを用いているため、キーを押しにくいと感じていた。
ORANGE-4ではキーとしてタクトスイッチを用いており、押しにくさは無いが、キーを押してからプログラムの入力操作として反映されるまでワンテンポ遅れる印象があった。
それに対し、このFX-マイコンでは、押しやすい物理キーがついている上に操作の遅延も感じられず、快適にプログラムを入力することができた。
音量の調節が可能
GMC-4では基板にスピーカーが直結されており、音量の調節はできず、うるさいという印象があった。
また、ORANGE-4では操作音のミュートは可能であるものの、音量の調節はできない。
一方、このFX-マイコンでは、音声の出力に本体のボリュームとアンプを用いているため、ボリュームによる音量の調節が可能である。
CAL INPT 命令が使える
GMC-4やORANGE-4では、機械語「E3」は欠番となっており、本来の効果は不明であった。
それに対し、FX-マイコンでは、この機械語「E3」は CAL INPT
命令であることが解説書に書かれており、もちろん使用も可能である。
この命令は、指定の回路を用い、外部に設置した2個のスイッチの入/切の状態を読み取るものである。
スイッチの状態に応じ、Aレジスタに以下の値が格納される。また、実行フラグは1になる。
なお、以下の表において、「Kn端子」は「Kn端子に接続したスイッチの状態」の略である。
K1端子 | K2端子 | Aレジスタに格納する値 |
---|---|---|
切 | 切 | 0 |
入 | 切 | 1 |
切 | 入 | 2 |
入 | 入 | 3 |
この命令を用いると、他のEn系の命令と同じく実行フラグが1でなければ実行されないものの、最低2ワードで2ビットの入力を得ることができる。
一方、ORANGE-4のin
命令は、1回あたり3ワードを用いる上に1回で1ビットしか読み込むことができないので、2ビットの入力を得るには最低7ワード (in
命令を2回で6ワード、Yレジスタの値の切り替えに最低1ワード) 必要である。
なお、「指定の回路を用いたスイッチの状態の読み取り」としているが、
スイッチのかわりにフォトカプラ(フォトリレー)を用いることで、任意のデジタル信号の読み取りが可能になると思われる。
ちなみに、「100種類のマイコン実験」を謳っていたが、説明書にはNo.1~No.100に加えてこの CAL INPT
命令を使用したプログラムが2種類掲載されており、実際には102種類である。
残念だった点
大きい
マイコンユニット本体はGMC-4やORANGE-4より一回り大きい程度である。
(むしろ見やすくていいかもしれない)
しかし、電子ブロック本体と連携させて使用するため、これが大きくて比較的扱いにくいという印象がある。
また、操作のために電子ブロックのフタを開けるが、これも邪魔になりやすい。
それぞれの大きさを実測すると、以下のようになった。
機種 | 横幅 (cm) | 奥行 (cm) | 厚さ (cm) |
---|---|---|---|
GMC-4 | 13.0 | 6.8 | 2.9 |
ORANGE-4 | 10.5 | 8.0 | 2.6 |
FX-マイコン (マイコンユニットのみ) | 14.3 | 8.9 | 2.6 |
FX-マイコン (電子ブロック込み) | 24.6 | 25.5 | 5.3 |
何もしなくてもプーという音がする
操作をしていない状態でも、電源を入れるとプーという音が聞こえた。
この音も、ボリュームの操作により大きさの調整は可能である。
また、CAL INPT
命令用の回路を接続していない状態より接続した状態のほうがこの音は大きくなるようであった。
このような仕様なのか、今回入手したFX-マイコンが中古で状態がよくないからなのかは、わからない。
端子の機能の解析
今回入手したFX-マイコンR-165のマイコンユニットには、周りのブロックと接続できる端子が11個あった。
このうち、9V入力、音声出力、GNDのうち下側の右の端子、K1、K2、K3は、説明書から機能が読み取れたものである。
GNDの他の端子は、GNDの端子同士で線で繋がっていた。
LED0、LED1、LED2の機能は説明書からは読み取れなかったが、実験の結果2進LEDと連動していることがわかった。
なお、K1、K2、K3は説明書に書かれていた名称であるが、その他の名称は便宜上独自に名付けたものである。
この記事において、「オシロスコープ」はFNIRSI-1013Dを用いた。
9V入力
本体の+A OUTに繋がっていた。
GNDからこの端子の電圧は、約9Vであった。
GND
本体のGNDに繋がっていた。
音声出力
本体のVOLUMEを経由し、本体のINPUT(アンプの入力)に繋がっていた。
CAL INPT
命令の実験においては、VOLUMEを短絡して10kΩの抵抗を経由して繋がっていた。
電子オルガンモード(9→RUN)を用い、他の端子に繋がない状態でオシロスコープで信号を観測すると、振幅約45mVの矩形波を観測できた。
波形のオフセット(0Vからの上下のズレ)は様々なものが観測されたが、音を出し続けてしばらくすると0V付近に動いてきた。
端子をアンプに接続した状態で観測すると、振幅はあまり変化しなかったが、波形の中心が0V付近になるまでの時間が短くなった。
出す音の種類とオシロスコープで測定した周波数の関係は、以下のようになっていた。
押すキー | 出す音 | 周波数 [Hz] | 押すキー | 出す音 | 周波数 [Hz] |
---|---|---|---|---|---|
0 | - | - | 8 | ラ | 239 |
1 | 低いラ | 118 | 9 | シ | 271 |
2 | 低いシ | 133 | A | 高いド | 290 |
3 | ド | 145 | B | 高いレ | 318 |
4 | レ | 160 | C | 高いミ | 359 |
5 | ミ | 181 | D | 高いファ | 384 |
6 | ファ | 192 | E | 高いソ | 435 |
7 | ソ | 217 | F | - | - |
プログラム入力時にキーを押した時の「ピッ」音は、約1.8kHzで、約8.5ミリ秒鳴っていることがわかった。
(10周期分で測定しているため、表示されている周波数の10倍である)
CAL SHTS
命令によるブザー音は、約430Hzであった。
LED0、LED1、LED2
LED0端子が2進LEDの0に、LED1端子が2進LEDの1に、LED2端子が2進LEDの2に対応している。
それぞれ、GNDからの電圧は、対応する2進LEDの点灯時は約8V、消灯時は約0Vであった。
オシロスコープで観察すると、波形は直流に近く、PWMのような断続的な波形ではなさそうだった。
消灯している2進LEDに対応する端子を2kΩの抵抗を介して9V入力に接続すると、対応する2進LEDが点灯し、GNDからの電圧は約5.5Vとなった。
点灯している2進LEDに対応する端子を2kΩの抵抗を介してGNDに接続すると、対応する2進LEDは点灯したままであったが、GNDからの電圧は約6.2Vとなった。
なお、音声出力時に2進LEDの3が点灯する様子が見られたが、音声出力端子を同様に2kΩの抵抗を介して9V入力に接続しても、2進LEDの3は点灯しなかった。
以下のプログラムを実行し、2進LEDの0を点滅させた。
機械語 プログラム
A 0 TIY 0 ; Yレジスタの値 (操作する2進LEDの位置) を0に設定する
loop:
E 1 CAL SETR ; 2進LEDの0を点灯させる
E 2 CAL RSTR ; 2進LEDの0を消灯させる
F 0 2 JUMP loop ; 点灯と消灯を繰り返す
結果、LED0端子では以下の波形を観測できた。
立ち上がりは速いが、立ち下がり時は約2Vまでは一気に下がり、その後徐々に電圧が下がっていくようである。
また、点灯時間より消灯時間の方が長いのは、消灯中にジャンプ命令を実行しているためであると考えられる。
さらに、プログラムを以下に変更し、7セグメントLEDを点灯させた状態で同じ処理を行った。
機械語 プログラム
1 AO ; 7セグメントLEDを点灯させる
A 0 TIY 0 ; Yレジスタの値 (操作する2進LEDの位置) を0に設定する
loop:
E 1 CAL SETR ; 2進LEDの0を点灯させる
E 2 CAL RSTR ; 2進LEDの0を消灯させる
F 0 3 JUMP loop ; 点灯と消灯を繰り返す
すると、LED0端子では以下の波形を観測できた。
似た波形だが、7セグメントLEDを点灯させない場合より周期が長くなっている。
したがって、7セグメントLEDを点灯させるとプログラムの実行が遅くなると考えられる。
K1、K2、K3
説明書から、CAL INPT
命令 (E3) について以下のことがわかる。
- K1、K2の状態を読み取り、Aレジスタに格納する
- 7セグメントLEDがONの状態でないと状態を読み取れない
- 以下の回路を接続して用い、スイッチをONにすると対応するビットが1になる
このことから、K1、K2は外部入力を読み込むための端子、K3は7セグメントLEDの点灯状態を出力する端子であるように読み取れる。
K1端子を2kΩの抵抗を介して9V入力に接続すると、0、1、2、3、RESETのどれかのキーを押した時のような動作になった。
K2端子を2kΩの抵抗を介して9V入力に接続すると、4、5、6、7、RUNのどれかのキーを押した時のような動作になった。
K1、K2端子をそれぞれ2kΩの抵抗を介してGNDに接続しても、何も起きないようであった。
さらに、プログラムを実行していないときや、プログラムの実行中に KA
命令を実行したときにキーを押すとK3端子の信号に反応が見られた。
例えば、0
キーを押すと以下のようにK1端子(CH2:青)に9Vのパルスが発生し、そのタイミングに合わせてK3端子(CH1:黄色)の電圧も上がった。
さらに、キーを押すとK3端子の信号の周期に変化がみられた。
以下のイメージで、キーの横のグループが端子に対応し、縦のグループがパルスのタイミングに対応しているようであった。
端子\タイミング | 4 (後) | 3 | 2 | 1 | 0 (先) |
---|---|---|---|---|---|
(内部2) | C | D | E | F | ADR SET |
(内部1) | 8 | 9 | A | B | INCR |
K2 | 4 | 5 | 6 | 7 | RUN |
K1 | 0 | 1 | 2 | 3 | RESET |
以下、
- プログラム非実行時 (データ編集中)
- プログラム実行時 (7セグメントLED消灯)
- プログラム実行時 (7セグメントLED点灯)
にわけてK3端子の挙動を紹介する。
プログラム非実行時
ボタンを押していないとき、396Hz程度の周期的な波形がみられた。
波形は、素早く立ち上がり、少しの間電圧を維持し、その後徐々に電圧を下げる形であった。
0~3のボタンを押すと、押したボタンに応じて波形の一部の電圧の上昇と、周期の変化が見られた。
ボタンを同時に押すと、押した分全てに対応する波形の変化が見られた。
さらに、RESETボタンなどの右端のボタンを押すと、K3端子の波形は立ち下がりも急になった。
以下がRESETボタンを押した時の波形である。
プログラム実行時 (7セグメントLED消灯)
以下のプログラムを実行した。
機械語 プログラム
start:
0 KA ; キー入力を読み込む
2 CH ; キー入力の結果によらずジャンプするようにする
F 0 0 JUMP start ; 最初に戻る
すると、キーを押していないとき、K3端子の波形は以下のようになった。
約174Hzの周期で、電圧がなだらかに下がり、急に上がる波形がみられた。
電圧が下がっている部分が KA
命令の実行 (の少なくとも一部)、そうでない部分がその他の命令の実行に対応すると考えられる。
電圧が下がっている部分を拡大すると、以下のようになっていた。
0~3のボタンを押すと、押したボタンに応じて波形の一部の電圧の上昇と、周期の変化が見られた。
ボタンを同時に押すと、一番早いタイミングで電圧が上昇するボタンに対応する変化に近い変化のみがみられたが、電圧の上がり方はボタンを1個だけ押したときよりも大きくなった。
さらに、ADR SETなどの右端のボタンを押すと、電圧の下降がみられなくなった。
プログラム実行時 (7セグメントLED点灯)
以下のプログラムを実行した。
機械語 プログラム
start:
1 AO ; 7セグメントLEDを点灯させる
F 0 0 JUMP start ; 最初に戻る
すると、キーを押していないとき、K3端子の波形は以下のようになった。
447Hzで、急に立ち上がり、少しの間電圧を維持してからなだらかに下がる波形がみられた。
0、1、2、3キーを押しても、波形に変化はみられなかった。
ADR SETキーを押すと、波形が9V付近の直流になり、7セグメントLEDが消灯した。
次に、以下のプログラムを実行した。
機械語 プログラム
start:
0 KA ; キー入力を読み込む
1 AO ; 7セグメントLEDを点灯させる
F 0 0 JUMP start ; 最初に戻る
すると、キーを押していないとき、K3端子の波形は以下のようになった。
3回に1回立ち上がりの間隔が長くなる、周期的な波形が見られた。
間隔が長い部分を拡大すると、以下のようになった。
この間隔が長くなるタイミングでキーを読み込んでいるようで、0、1、2、3のキーを押すと波形に変化が見られた。
具体的には、一部の電圧の上昇と立ち上がりの間隔の変化が見られた。
さらに、ADR SETなどの右端のボタンを押すと、波形は約9Vの直流になった。
CAL INPT 命令用回路とK3端子
これまでの測定は、K3端子に (オシロスコープのプローブ以外) 何も接続しない状態での測定だった。
次に、K3端子に前述の CAL INPT
命令用の回路を接続した状態で測定を行った。
具体的には、ブロックを収納しつつ余計な接続をするのを避けるため、ブロックを以下の配置とした。
この配置により、キースイッチによるK1端子への入力ができる。
K2端子への入力は、必要であれば外部のジャンパー線などを用いる。
この回路を接続すると、K3端子の信号の立ち下がりが速くなった。
以下が、プログラムを実行していない時のK3端子で観測された波形である。
以下が、プログラム
機械語 プログラム
start:
0 KA ; キー入力を読み込む
2 CH ; キー入力の結果によらずジャンプするようにする
F 0 0 JUMP start ; 最初に戻る
ボタンを同時押ししたとき、「電圧上昇時の電圧が上がる」ではなく「電圧上昇後の電圧が下がる」という現象がみられた。
以下が、プログラム
機械語 プログラム
start:
0 KA ; キー入力を読み込む
1 AO ; 7セグメントLEDを点灯させる
F 0 0 JUMP start ; 最初に戻る
こちらでも、7セグメントLEDの消灯時と同様に、ボタンを同時押ししたとき、「電圧上昇時の電圧が上がる」ではなく「電圧上昇後の電圧が下がる」という現象がみられた。
CAL INPT命令用回路により生成される入力
以下は、プログラムを実行していないときのK3端子の信号(CH2:青)と、それに対応するCAL INPT命令用回路により生成されるK1、K2への入力用信号(トランジスタのコレクタ)(CH1:黄色)である。
K3端子が0Vのときは約9V、K3端子が約9Vのときは約4.5Vとなっている。
以下は、プログラム
機械語 プログラム
start:
E 3 CAL INPT ; ポート入力を読み込む
1 AO ; 7セグメントLEDを点灯させる
F 0 0 JUMP start ; 最初に戻る
を実行したときのK3端子の信号(CH2:青)と、それに対応するCAL INPT命令用回路により生成されるK1、K2への入力用信号(トランジスタのコレクタ)(CH1:黄色)である。
0、1、2、3のキーを押しても、波形に変化は見られなかった。
この入力用信号をK1端子に入力するスイッチをオンにすると、以下の波形に変化した。
入力用信号の電圧が若干上がり、波形の電圧のブレが少なくなっている。
補足
2進LEDを点滅させる実験中にADR SETボタンを押すと、2進LEDの点滅が止まり、ONまたはOFFが続いた。
このことから、プログラムの実行中に右端の列のボタンを押すと、プログラムの実行が一旦止まり、
そのためプログラムの実行にかかわるK3端子の信号も止まったと考えられる。