目次
課題3は、空き缶にボールを当てるというもの。NQCの場合はライトセンサーと懐中電灯を利用し、空き缶の方向へとロボを誘導させる。以前と同様にロボットの構造とプログラムを見ていく。
基本は課題2のものがベースとなっているので以下のページを参照のこと。
変更点としては、ライトセンサーの取り付け位置と取り付け方法である。
まずは位置。課題2では内側にあったセンサーを懐中電灯の光を感知するためにロボの前方に持ってきた。
続いてライトセンサーに施した工夫。蛍光灯の光による値の変化を抑え、センサーが確実に懐中電灯の光をとらえるよう、写真のようにセンサーの周りをブロックで囲んだ。
プログラムは以下の通り。
#define ageru OnRev(OUT_B);Wait(9);Off(OUT_B); #define utsu OnFwd(OUT_AC);Wait(50);ageru;OnRev(OUT_AC);Wait(50);Off(OUT_AC); #define hikari 53 //懐中電灯が1メートル先にある場合のしきい値 task main() { SetSensor(SENSOR_2, SENSOR_LIGHT); while(SENSOR_2 < hikari){ //しきい値53より小さい時旋回 OnFwd(OUT_A);OnRev(OUT_C); } Off(OUT_AC);Wait(100); while(SENSOR_2 < 63){ //しきい値53以上63より小さい時前進 OnRev(OUT_AC); } utsu; //ボールを打つ }
予め懐中電灯の光のしきい値を測っておき、そのしきい値になったら前進するというプログラムである。懐中電灯のしきい値が確定しており、変数やタイマーを使用しない分かなり単純なものとなった。
課題3に関して。課題3では他のメンバーとのプログラムに違いを出すという条件があり、変数とタイマーを使うと類似したプログラムになってしまうので予めしきい値を測るという形になった。プログラムの理解はすぐできたものの、折角課題2で変数とタイマーなどを使ったのでそれを他のメンバーと違う形でどうにか利用できればよかった。 ロボットに関しては課題2のものをほぼそのままの形で使用したので困ることはなかった。
すべての課題を通して、やはり変数の利用が自分の課題だと感じた。そのために、練習問題を繰り返し行うことが必要だと思う。繰り返す中で自分でプログラムを改良したり、違う種類のプログラムを考え作成できるようにしたい。