センサー

ロボカーの底面には床面の色(白黒)を計測するセンサ2機がついている。

sensors

sensors measurement

このセンサの計測値は関数 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( ) が返す値はロボカーによって異なるので注意せよ。

問題

ロボカーの前進方向は電池のある方とする。

  1. ADRead(0)で読む(取得できる)のは右、左、どちらのセンサーの値か?調べてノートせよ。

  2. 【個人課題、回収します】右側のセンサが黒を感知したら右側 LED、 左側のセンサが黒を感知したら左側の LED を点灯させよ。

  3. 右側のセンサが白っぽい色を計測したとき低い音、 黒っぽい色を計測したとき高い音を鳴らせ。

  4. 白いアクリル板の上にロボカーを置き、センサーが黒を発見するまで直進させろ。

    find black

  5. 白いアクリル板の黒線をまたぐようにロボカーを置き、直進させ、 黒線から外れたらその地点でロボカーを静止させろ。

    stop at curve

  6. 【グループ課題 f2】 図の位置に黒線をまたぐようロボカーを置き、S 字カーブに沿ってロボカーを走らせ、 黒直線を踏んだら静止する。

    trace s

  7. 【グループ課題 f3】 0.1 秒ごとに床面色を10回測定し、その平均値をブザーの回数で教えるプログラム。 900回とかブザーなっても数えられないから、100で割った回数鳴らすようにせよ。 さらに、スイッチ押したら 1 秒後に測定開始とかの工夫が必要だろう。 測定中は LED を点灯させるとか。

index


hkimura.

0.9