ハンダづけが終わったところで動作確認ができるよう、マイコンにサンプルプログラムを書き込んだ状態で、ココナッツは学校に納入されています。
そのサンプルプログラムは、【ココナッツの電源を入れたときの、スライドスイッチとタクトスイッチのON-OFFの組み合わせで、実行されるプログラムが次の4つに分岐する】というものになっています。
①スライドスイッチON、タクトスイッチOFFのとき
一つずつ音階を鳴らしてLEDを点灯させる
②スライドスイッチOFF、タクトスイッチOFFのとき
LEDを全点灯させて、10秒後に全消灯させる
③スライドスイッチON、タクトスイッチONのとき
CdSセルによる3段階の調光をさせる
④スライドスイッチOFF、タクトスイッチONのとき
リモコンの赤外線によって、LEDの全点灯・全消灯を切り替えさせる
ここで、サンプルプログラムの注意点があります。
赤外線受信モジュールや音センサを配置している場合は、上のように4つに分岐します。
ドップラセンサやタッチセンサを配置している場合は、①のみが実行され、スイッチの状況にかかわらず分岐されません。
あくまでもサンプルプログラムでは分岐しないというだけなので、プログラムの修正を行えば、分岐させることができます。
サンプルプログラムの仕様ということで、よろしくお願いします。
以下、解説です。難解かもしれません。
ココナッツには、いくつかの変数が設定されています。
変数iには、スライドスイッチとタクトスイッチのそれぞれのON-OFFの状態に応じた数値が自動的に代入されます。
この数値は、配置しているセンサによっても変わる仕様になっています。
通信ソフト上で【i?】と入力すると、変数iの値が表示されます。
このとき、
Yに配置されているセンサの出力がゼロでない場合、変数iは、8~11までの値を取ります。
Yに配置されているセンサの出力がゼロの場合、変数iは、0~3までの値を取ります。
サンプルプログラムは、【電源を入れたときに、変数iが8~11のいずれかなら、その値に応じて分岐するプログラム】となっています。
変数iが0~3の場合は、分岐しません。
通常時、
赤外線受信モジュールや音センサの出力はゼロ以上なので、変数iは8~11を取ります。
ドップラセンサやタッチセンサの出力はゼロなので、変数iは0~3を取ります。
このことから、
ドップラセンサやタッチセンサだけを配置している場合は、条件を満たさないので、サンプルプログラムでは分岐しません。
また、タッチセンサを触りながら電源を入れると、変数iは8~11の値を取るので、スイッチの状態に応じてプログラムが分岐します。
たとえば、タッチセンサと赤外線受信モジュールを併用すると、変数iは8~11の値を取るので、スイッチの組み合わせによる分岐は行われます。
ですが、センサの値による分岐が正確に行われなくなります(タッチセンサに触れていない状況でも、触れていると計測されてしまいます)。