センサー
ロボカーの底面には床面の色(白黒)を計測するセンサ2機がついている。
このセンサの計測値は関数 ADRead( ) の戻り値として得ることができる。
unsigned short ADRead( uint8_t ch )
uint8_t は unsigned char と考えてよい。噛み砕くと、 ロボカーは ADRead(0) で片方のセンサ、ADRead(1) でもう片方のセンサの計測値を 0 ~ 1023 の数字で返す(*)。
* unsigned short の守備範囲は 0 ~ 65535 ではないか? その通り。ただ、それよりもメモリを食わない unsigned char だと 0 ~ 512 しか表せないので、 入れ物として十分な unsigned short にしてある、と思います。
-
値が 0 に近い時、センサ直下の床面の色は白に近く、
-
値が 1023 に近い時、センサ直下の床面の色は黒に近い。
-
反射するものがないとき、センサは黒と判定する。
同じ色を見せても、ADRead( ) が返す値はロボカーによって異なるので注意せよ。
問題
ロボカーの前進方向は電池のある方とする。
-
ADRead(0)で読む(取得できる)のは右、左、どちらのセンサーの値か?調べてノートせよ。
-
【個人課題、回収します】右側のセンサが黒を感知したら右側 LED、 左側のセンサが黒を感知したら左側の LED を点灯させよ。
-
右側のセンサが白っぽい色を計測したとき低い音、 黒っぽい色を計測したとき高い音を鳴らせ。
-
白いアクリル板の上にロボカーを置き、センサーが黒を発見するまで直進させろ。
-
白いアクリル板の黒線をまたぐようにロボカーを置き、直進させ、 黒線から外れたらその地点でロボカーを静止させろ。
-
【グループ課題 f2】 図の位置に黒線をまたぐようロボカーを置き、S 字カーブに沿ってロボカーを走らせ、 黒直線を踏んだら静止する。
-
【グループ課題 f3】 0.1 秒ごとに床面色を10回測定し、その平均値をブザーの回数で教えるプログラム。 900回とかブザーなっても数えられないから、100で割った回数鳴らすようにせよ。 さらに、スイッチ押したら 1 秒後に測定開始とかの工夫が必要だろう。 測定中は LED を点灯させるとか。
hkimura.
0.9