はじめに
筆者は小学生の頃、算数で九九がなかなか覚えられず苦労しました。アラ還になった今は、物覚えは更に悪くなり、物忘れは更に早くなり、苦労して覚えた九九も忘れてしまうのではと危機感を感じています。衰えた脳ミソを少しでも活性化するための一助になればと本器を作製しました。
内容
本器は、シーケンシャルモードとランダムモードを選択できます。シーケンシャルモードは、1×1からスタート、9×9で折り返して1×1に戻りを繰り返します。ランダムモードは、疑似乱数 を使ってランダムに出題します。液晶表示器に0.5秒間隔で出題と答え表示を繰り返します。答え表示前に回答します。
シーケンシャルモード
シーケンシャルモードは、for文のネストを利用しています。「RGBフルカラーLEDの実験」のfor文ネストの解説をご覧いただけると、下記プログラムの仕組みも理解できると思います。
ランダムモード
ランダムモードは、疑似乱数という手法を用います。疑似乱数は、ある元となる数字から計算によって作り出した一見ランダムに見える乱数で、元となる数字が同じだと同じパターンの乱数を繰り返します。いわば「なんちゃって乱数」ですが、本器の用途には十分使えます。
C言語には、疑似乱数を生成する rand関数 が用意されています。rand関数を使うには、ヘッダーファイル stdlib.h をインクルードする必要があります。rand関数を使うと、0からRAND_MAXまでの整数の乱数を生成できます。RAND_MAXは stdlib.h で定義されますが、その値は環境によって異なります。本器に使用したPIC16F18313の RAND_MAXは32,767でした。
また、九九の場合は1~9の範囲にする必要があります。それには、任意の整数を9で除した余りに1を足します。ちなみに、6で除した余りに1を足せば疑似サイコロになります。
以下は、rand関数による疑似乱数の九九プログラムです。
結果
練習器を小型のユニバーサル基板に構成してモビリティー化しました(下写真)。ボタン電池(3V)で動作します。手のひらに収まるサイズなので、どこでも九九のトレーニングができます。(動画はこちら)
感想
実際に使ってみて、0.5秒以内の回答の繰り返しは筆者の脳ミソにはかなり刺激になりました。ランダムモードは、使っていると同じ出題を繰り返すことが分かりますがご愛敬。これからも本器を脳活トレーニングに使っていこうと思います。
以上