学校に納入されるときに書き込まれているプログラムは、以下のものになります。
出荷時のプログラム(注釈付き
これは、赤外線受信モジュールを使うことを想定したプログラムになっています。
【注意】
ドップラセンサやタッチセンサなどを使う場合は、正常な動作確認ができません。
ドップラセンサなどに対応したサンプルプログラムを書き込んで、動作確認を行ってください。
学校に納入されるときに書き込まれているプログラムは、以下のものになります。
出荷時のプログラム(注釈付き
これは、赤外線受信モジュールを使うことを想定したプログラムになっています。
【注意】
ドップラセンサやタッチセンサなどを使う場合は、正常な動作確認ができません。
ドップラセンサなどに対応したサンプルプログラムを書き込んで、動作確認を行ってください。
(2023年7月 記述変更)
学校納入時のプログラムは、入力Yに赤外線受信モジュールをつけることを前提にしています。
ドップラセンサやタッチセンサを使う場合、正常な動作確認ができません。
※当初はドップラセンサやタッチセンサを使うことを想定しなかったため
下記のプログラムをコピーしてマイコンに書き込むことで、すべてのパーツの動作確認ができるようになります。
サンプルプログラム(ドップラセンサ用(注釈つき
上のファイルを開いて「すべて選択」→「コピー」→テラタームに「貼り付け」をして書き込んでください(注釈は自動でスキップされます)。
【補足】
以下のプログラムは、ドップラセンサ用のサンプルプログラム(注釈なし)です。
行番号1から8までが、赤外線受信モジュールに対応した分岐命令で、
行番号9から16までが、ドップラセンサなどに対応した分岐命令となっています。
na
1 ?I=9
2 #=1:
3 ?I=11
4 #=2:
5 ?I=8
6 #=3:
7 ?I=10
8 #=4:
9 ?I=1
10 #=1:
11 ?I=3
12 #=2:
13 ?I=0
14 #=3:
15 ?I=2
16 #=4:
17 1:
18 WD1
19 S25
20 WD1
21 S0
22 O=1
23 WD5
24 S27
25 WD1
26 S0
27 O=2
28 WD5
29 S29
30 WD1
31 S0
32 O=4
33 WD5
34 S30
35 WD1
36 S0
37 O=8
38 WD5
39 S32
40 WD1
41 S0
42 O=16
43 WD5
44 S34
45 WD1
46 S0
47 O=32
48 WD5
49 S36
50 WD1
51 S0
52 O=64
53 WD5
54 S37
55 WD1
56 S0
57 O=128
58 WD5
59 O=0
60 #=1:
61 2:
62 O=255
63 ?Y<128
64 #=2:
65 21:
66 O=0
67 ?Y>128
68 #=21:
69 WS1
70 22:
71 ?Y<128
72 #=22:
73 23:
74 O=255
75 ?Y>128
76 #=23:
77 WS1
78 #=2:
79 3:
80 ?X>180
81 #=33:
82 ?X>150
83 #=32:
84 ?X<100
85 #=31:
86 O=85
87 #=3:
88 33:
89 O=0
90 #=3:
91 32:
92 O=1
93 #=3:
94 31:
95 O=255
96 #=3:
97 4:
98 O=1
99 VR0
100 WD8
101 V0
102 41:
103 O=1
104 ?X>100
105 #=41:
106 ?Y<128
107 #=41:
108 O=255
109 #=41:
;
▮プログラム終了命令
以下の行は実行されない。
▮注釈
【;】より右の文字列は、プログラムとして処理されない。
なので、プログラムの注釈などを記載しておくことができる。
▮ラベル
□: (△:行番号 □:数字)
プログラムの中にラベルを付与したり、ラベルにジャンプしたりするとき使う。
ex.
1 10:
2 o=255
3 ws1
4 o=0
5 ws1
6 #=10:
1行目にラベル10:を設定して、6行目でラベル10:にジャンプしている。
※ループプログラムの終了は、Ctrlキーを押しながらCを押す。
▮ジャンプ命令
#=□ (□:対応する行番号)
#=□: (□:対応するラベル)
対応する行番号やラベルへジャンプして、プログラム実行を続ける。
▮サブルーチン呼び出し
#:□ (□:対応する行番号)
#:□: (□:対応するラベル)
対応する行番号やラベルを呼び出す。
#:$
メインプログラムに戻る。
▮変数の値の表示命令
□?
□に入る変数の値をソフトウェア上に表示する。
▮条件分岐
?【条件】
条件を満たせば次の行を実行し、満たさなければ一つ飛ばして実行する。
ジャンプ命令と組み合わせることが多い。
条件では、=、>、>=などを使い、ある変数と定数(または別の変数)を比較する。
▮空き変数
変数と定数、または変数と変数による四則演算が可能。
ex.
A=10 変数Aに10を代入する
A+1 変数Aに1を加える
A-B 変数Aから変数Bを引く
▮プログラムの強制終了
プログラムを終了させる。
▮スライドスイッチとタクトスイッチの入力状況を表す変数
センサYの種類によって、0~3の値を取るか8~11の値を取る。
▮プログラムの消去コマンド
【NA】でプログラム全体を消去する。
N□ (□:行番号)
□行目以下を消去する。
▮出力
O=□ (□:0~255の整数)
O=0B⑧⑦⑥⑤④③②① (①~⑧:0または1)(丸数字は、対応するLED番号)
対応するLEDの点灯・消灯を制御する。
※6番のLEDが点灯するとき、電子メロディも流れる。
▮プログラム作成時の行番号自動付加
Q□,△ → Q
命令を入力するごとに、□、□+△、□+△×2…と行番号を自動で付与していく。
Qのみの命令で自動付与終了。
▮プログラムの実行コマンド
プログラムを最初から実行する。
R□ (□:行番号)
□行目からプログラムを実行する。
サブルーチンのテストやスイッチによる分岐先のプログラムをテストしたいときなどで使う。
※プログラムの強制終了はCtrl+C。
▮時間制御
WD□ (□:0~255) :0.1×□秒間待機
WS□ (□:0~255) :□秒間待機
WM□ (□:0~255) :□分間待機
WH□ (□:0~255) :□時間待機
待機時間が終わるまで次の命令が実行されない。
▮CdSセルで計測する明るさを表す変数
明るさによって、0~255の値を取る
▮センサYの計測値を表す変数
センサが計測し数値化したもので、0~255の値を取る
ハンダづけが終わったところで動作確認ができるよう、マイコンにサンプルプログラムを書き込んだ状態で、ココナッツは学校に納入されています。
そのサンプルプログラムは、【ココナッツの電源を入れたときの、スライドスイッチとタクトスイッチのON-OFFの組み合わせで、実行されるプログラムが次の4つに分岐する】というものになっています。
①スライドスイッチON、タクトスイッチOFFのとき
一つずつ音階を鳴らしてLEDを点灯させる
②スライドスイッチOFF、タクトスイッチOFFのとき
LEDを全点灯させて、10秒後に全消灯させる
③スライドスイッチON、タクトスイッチONのとき
CdSセルによる3段階の調光をさせる
④スライドスイッチOFF、タクトスイッチONのとき
リモコンの赤外線によって、LEDの全点灯・全消灯を切り替えさせる
ここで、サンプルプログラムの注意点があります。
赤外線受信モジュールや音センサを配置している場合は、上のように4つに分岐します。
ドップラセンサやタッチセンサを配置している場合は、①のみが実行され、スイッチの状況にかかわらず分岐されません。
あくまでもサンプルプログラムでは分岐しないというだけなので、プログラムの修正を行えば、分岐させることができます。
サンプルプログラムの仕様ということで、よろしくお願いします。
以下、解説です。難解かもしれません。
「プログラム③命令文を追加する」の続きです。
このプログラムは、実行すると、最後はLEDが半分点灯し続けます。
これを、すべてのLEDが消灯して終わるプログラムに変えてみます。
入力待ちになっているのを確認して、次の命令を入力します。
【3 O=15】
【5 O=0】
ここでプログラムを実行すると、【全点灯して、1秒後に半分点灯になって、さらに1秒後に全消灯】とLEDの点灯順が変わっています。
プログラムを確認します。
プログラム表示は、【L】と入力します。
3行目と5行目の命令が変わっているのがわかります。
入力した命令文は、行番号が重複するときは上書きされます。
※行番号が重複しない場合は、追加されます。
同様に、命令文の削除も行えます。
命令文を削除するときは、削除したい行番号だけを入力します。
今回は3行目と4行目を削除したいので【3】【4】と入力します。
プログラムを表示します。
3行目と4行目がなくなっているのが確認できました。
ちなみに。
1、2、5…と行番号が不連続になっていますが、行番号が小さい順に実行されていくだけなので、支障はありません。
「プログラム②簡単なプログラムを作ってみる」を参考にプログラムを作ります。
【R】と入力すると、「LEDをすべて点灯させ、1秒後にすべて消灯させる」プログラムが実行されました。
このプログラムは…
1【LEDを全点灯させる】
2【WS1】
3【LEDを全消灯させる】
で1セットになっています。
ココナッツのプログラムは、「命令の頭につく数字」の小さい順に命令を実行していくのがルールです。
「命令の頭につく数字」を行番号と呼びます。
【WS1】は【1秒待て】という命令です。
行番号の小さい順に実行していくのがルールなので、【全点灯】→【1秒待つ】→【全消灯】と実行されていきます。
このプログラムに新しい命令を追加します。
命令はすべて、【▮】が点滅している行で入力します。
一番下の【>▮】の行以外では、入力操作はできません。
【4 WS1】(4・半角空白・ダブリュ・エス・1)と入力します。
【5 O=15】(5・半角空白・オー・イコール・15)と入力します。
【R】と入力してプログラムを実行すると、「LEDがすべて点灯して、1秒後にすべて消えて、さらに1秒後にLED1からLED4までが点灯」しました。
プログラムを表示させてみます。
【L】と入力すると、マイコンに書き込まれているプログラムが表示されます。
【L】のあとの【>】の表示されていない部分が、書き込まれているプログラムです。
1【LEDを全点灯させる】
2【1秒待て】
3【LEDを全消灯させる】
4【1秒待て】
5【LEDを半分点灯させる】
と、4行目と5行目が追加されているのがわかります。
行番号が重なっていなければ、プログラムに追加されていきます。
プログラムのマイコンへの書き込みは、プログラムの実行時(【R】と入力)やプログラムの表示時(【L】と入力)に行われます。
ココナッツをプログラムで動かしてみます。
世の中には、音楽会のプログラム、運動会のプログラム、テレビのプログラムなどなど様々なプログラムがあります。
プログラムは、「予定表」と呼べるものです。
コンピュータ関係のプログラムは、「計画書」「指示書」といったイメージになるかもしれません。
まずは、準備をします。
①パソコンとココナッツをUSBケーブルで繋ぐ
②ココナッツの電源を入れる
③テラタームを起動する
④設定を保存していなければ、必要な設定をする
テラターム上で【O=255】と入力すればLEDがすべて点灯します。
また、【O=0】と入力すればLEDがすべて消灯します。
ただ。
ココナッツがパソコンと繋がっていない状況下では、LEDを点灯・消灯させることができません。
そもそも。
毎回一つ一つ命令を入力するなら、もっとシンプルな回路を作って、人間の手でスイッチを操作するほうが簡単です。
そこで。
あらかじめココナッツにプログラムを与え、その都度命令を入力しないでも、プログラムで決められた通りに動作させるようにします。
とりあえず、簡単なプログラムを作ってみます。
入力は、すべて半角英数字で行います。大文字・小文字はどちらでも可です。
一番上の行は【NA】(エヌ・エー)と入力します。
次の行は【1 O=255】(1・半角空白・オー・イコール・255)と入力します。
さらに次の行は【2 WS1】(2・半角空白・ダブリュ・エス・1)と入力します。
最後に【3 O=0】(3・半角空白・オー・イコール・ゼロ)と入力します。
これで、プログラムは完成です。
パッと見た感じ、LEDの点灯命令が2つ入っています。
でも、ココナッツには何も起きません。
命令の前に数字がついているとき、その命令は、すぐには実行されません。
命令の前につく数を行番号と呼びます。
命令に行番号が付与されている場合、その命令は、プログラムとして認識されます。
そして、プログラムは、『実行しろ』という命令が与えられるまで実行されません。
学校の音楽会を想像してみると…
音楽会のプログラムは何日も前から完成しています。
でも、そのプログラムは、開催日になって、全員が会場に集まって、定刻が来て、進行係の先生が「それでは音楽会を始めます。一、開会のあいさつ」と言うまで始まりません。
各クラスは、決められた順番が来るまで待機し、勝手に発表を始めません。
ココナッツのプログラムも、プログラムを開始する命令が必要です。
そして、プログラムが始まって決められた順番が来るまで、LEDの点灯命令などは実行されません。
【R】と入力すると、プログラムが開始されます。
プログラムの実行中は【>】が表示されません。
この間は、プログラムの停止命令以外、入力を受け付けません。
プログラムが完了すると【>】が表示されて、入力待ち状態になります。
で。
このプログラムを実行すると、ココナッツのLEDがすべて点灯し(電子メロディも流れます)、1秒後に、LEDがすべて消えました。
また、USBケーブルを外した状態でココナッツの電源を入れると、マイコンに書き込まれたプログラムが自動で実行されます。
指示を与えておくと、あとは勝手にやってくれる…これがプログラムです☆
手始めに、ココナッツのLEDを点灯させてみます。
そのための準備をします。
先述の「パソコンと繋いでみる」も参考にしてください。
①パソコンとココナッツをUSBケーブルで繋ぐ
②ココナッツの電源を入れる
③テラタームを起動する
④設定を保存していなければ、必要な設定をする
これで準備完了です。
テラタームの画面は上図のようになります。
※「cosmos v4.00」が表示されない場合もあります。
【>】マークのあとに【▮】が点滅してたら入力可能です。
では、実際に命令を打ち込んでみます。
入力は、すべて半角英数字で行います。
アルファベットの大文字・小文字の区別はありません。
【O=255】(オー・イコール・255)と打ちENTERキーを押すと、すべてのLEDが光りスピーカから曲が流れます。
【O=0】(オー・イコール・ゼロ)と打ちENTERキーを押すと、すべてのLEDが消えて曲も止まります。
※以下、何かしらの命令を打ってENTERキーを押すことを【入力する】と呼ぶこととします。
【O=□】(□は1~255までの整数)と入力すると、数字に対応したLEDの組み合わせで点灯します。
【O=0】と入力すると、すべてのLEDが消えます。
※LED6が光るとき、スピーカから曲が流れます。
違う入力方法もあります。
【O=0B11111111】(オー・イコール・ゼロ・ビー・11111111)と入力すると、LEDが全点灯します。
【O=0B00000000】(オー・イコール・ゼロ・ビー・ゼロ・ゼロ…)と入力すると、LEDが全消灯します。
【O=0B⑧⑦⑥⑤④③②①】で丸数字に0か1を入れると、LEDがさまざまな光りかたをします。
丸数字はLED番号に対応しており、0で対応するLEDが消灯し、1で対応するLEDが点灯します。
【O=0B00000001】と入力すると、LED1のみ光ります。
【O=0B11011111】と入力すると、LED6のみ光らずメロディも流れません。
テラタームを経由して命令を与えることで、ココナッツのLEDの点灯・消灯を操作しているのがわかります。