ココナッツ・プログラム

納入時の動作確認プログラムは、赤外線受信モジュールに対応しています。

ドップラセンサやタッチセンサを使う場合、スライドスイッチとタクトスイッチとセンサの動作確認ができません。

 

下のプログラムは、すべてのパーツの動作確認ができるプログラムです。

サンプルプログラム(ドップラセンサ用

 

;サンプルプログラムの注釈なしバージョン

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 O=0
19 ?X<100
20 O=85
21 ?Y>0
22 O+170
23 #=1:
24 2:
25 O=0
26 ?X>100
27 #=2:
28 ?Y>0
29 O=255
30 #=2:
31 3:
32 ?X>130
33 #=33:
34 ?X>110
35 #=32:
36 ?X>90
37 #=31:
38 O=255
39 #=3:
40 33:
41 O=0
42 #=3:
43 32:
44 O=1
45 #=3:
46 31:
47 O=31
48 #=3:
49 4:
50 O=1
51 VR0
52 WD8
53 V0
54 41:
55 O=0
56 ?Y=0
57 #=41:
58 O=223
59 S20
60 WD5
61 S0
62 #=41:

.

▮プログラム終了命令

以下の行は実行されない。

 


;

▮注釈

【;】より右の文字列は、プログラムとして処理されない。

なので、プログラムの注釈などを記載しておくことができる。

 


:

▮ラベル

□: (△:行番号 □:数字)

プログラムの中にラベルを付与したり、ラベルにジャンプしたりするとき使う。

ex.

1 10:

2 o=255

3 ws1

4 o=0

5 ws1

6 #=10:

1行目にラベル10:を設定して、6行目でラベル10:にジャンプしている。

 

※ループプログラムの終了は、Ctrlキーを押しながらCを押す。

 


▮ジャンプ命令

#=□  (□:対応する行番号)

#=□: (□:対応するラベル)

対応する行番号やラベルへジャンプして、プログラム実行を続ける。

 

▮サブルーチン呼び出し

#:□  (□:対応する行番号)

#:□: (□:対応するラベル)

対応する行番号やラベルを呼び出す。

 

#:$

メインプログラムに戻る。  

 

 


▮変数の値の表示命令

□?

□に入る変数の値をソフトウェア上に表示する。

 

▮条件分岐

?【条件】

条件を満たせば次の行を実行し、満たさなければ一つ飛ばして実行する。

ジャンプ命令と組み合わせることが多い。

条件では、=、>、>=などを使い、ある変数と定数(または別の変数)を比較する。

 


A~G

▮空き変数

変数と定数、または変数と変数による四則演算が可能。

ex.

A=10  変数Aに10を代入する

A+1  変数Aに1を加える

A-B  変数Aから変数Bを引く

 

Ctrl+C

▮プログラムの強制終了

プログラムを終了させる。

 


 

I

▮スライドスイッチとタクトスイッチの入力状況を表す変数

センサYの種類によって、0~3の値を取るか8~11の値を取る。

 


N

▮プログラムの消去コマンド

【NA】でプログラム全体を消去する。

 

N□ (□:行番号)

□行目以下を消去する。

 

 


O

▮出力

O=□ (□:0~255の整数)

O=0B⑧⑦⑥⑤④③②① (①~⑧:0または1)(丸数字は、対応するLED番号)

対応するLEDの点灯・消灯を制御する

 

※6番のLEDが点灯するとき、電子メロディも流れる。

 


Q

▮プログラム作成時の行番号自動付加

Q□,△ → Q

命令を入力するごとに、□、□+△、□+△×2…と行番号を自動で付与していく。

Qのみの命令で自動付与終了。

 

 


R

▮プログラムの実行コマンド

プログラムを最初から実行する。

 

R□ (□:行番号)

□行目からプログラムを実行する。

サブルーチンのテストやスイッチによる分岐先のプログラムをテストしたいときなどで使う。

 

※プログラムの強制終了はCtrl+C。

 


W

▮時間制御

WD□ (□:0~255) :0.1×□秒間待機

WS□ (□:0~255) :□秒間待機

WM□ (□:0~255) :□分間待機

WH□ (□:0~255) :□時間待機

待機時間が終わるまで次の命令が実行されない。

 


X

▮CdSセルで計測する明るさを表す変数

明るさによって、0~255の値を取る

 


Y

▮センサ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の点灯・消灯を操作しているのがわかります。

ココナッツもコンピュータですが、キーボードもモニタもついていません。

なので、Windowsパソコンのキーボードやモニタを借りて、ココナッツのいろいろを操作します

 

必要になるものは、USBケーブル(A-miniB)と通信ソフト(テラターム)の2つです。

 

手順は以下のようになります。

①パソコンとココナッツをUSBケーブルで繋ぎます。

 

②ココナッツの電源を入れます。

未設定時のみ、USBのドライバファイルを要求してきますので定義ファイルを入れます。

 

③テラタームを起動します。

 

起動すると、TCP/IPかシリアルかを選択することになります。

下のシリアルからポートを選んで先に進みます。

 

ポートがわからない場合は、まず、ココナッツの電源を入れないでテラタームを起動します。

そこに表示されたポートを書き控えます。

一旦ココナッツの電源を切り、テラタームを閉じ、再度ココナッツの電源を入れて、テラタームを起動すると…先ほど書き控えたポートに、一つポートが加わっているはずです。

それが、選択すべきポートになります。

 

④テラタームの設定を変更します。

【設定】→【シリアルポート】を選択します。

下から2番目、フロー制御項目を【Xon/Xoff】に変更します。

一番下の項目 、送信遅延を【1ミリ秒/字】に変更します。

 

毎回設定するのが大変なら、【設定】→【設定の保存】をすると、設定変更された状態で起動されます。

 

⑤準備完了です。

これでプログラムの作成ができるようになりました。