[[2005/C4]]
* 光を追いかけて進むロボット [#h061ee37]
** ロボットの概要 [#u6f35273]
~ このロボットを作ったときは、懐中電灯がなかったので
~ 太陽の光に向かうロボットとなりました。。。
~ 光センサーは、値の上下が激しいのと、あと周囲の明るさを平均的に得るために、光センサーの前に青い半透明のパーツをつけました。

~ 光センサーの値の変動が激しいのと、あと周囲の明るさを平均的に得るために、光センサーの前に青い半透明のパーツをつけました。
** ロボットの写真 [#p7f525a4]
&ref();
** プログラムの解説 [#v846ce5b]
- 右と左についている光センサーの値の差が少ない場合は、取りあえず直進するようになっています。
- それよりも差があり、かつそれよりもちょっとだけ差が大きい場合は、明るい方のセンサーがついている側のモーターをfloatしています。
- それよりも差がある場合は、floatでなくoffしています。
- プログラム中に解説のためのコメントは入れません。コメントが付くと入れると、かえってゴチャゴチャしてきそうなので。
- プログラム中に解説のためのコメントは入れません。コメントが入っていると、かえってゴチャゴチャしそうなので。
** プログラム [#ffa73496]
 #define LIGHT_L SENSOR_1
 #define LIGHT_R SENSOR_3
 
 #define L OUT_A
 #define R OUT_C
 
 task main(){
        SetSensor(LIGHT_L,SENSOR_LIGHT);
        SetSensor(LIGHT_R,SENSOR_LIGHT);
 
        Off(L+R);
 
        while(1){
                if(LIGHT_L-LIGHT_R>2 || LIGHT_R-LIGHT_L>2){
                        if(LIGHT_L>LIGHT_R){
                                if(LIGHT_L-LIGHT_R>4){
                                        Off(L);
                                        OnFwd(R);
 
                                }else{
                                        Float(L);
                                        OnFwd(R);
 
                                }
 
                        }else{
                                if(LIGHT_R-LIGHT_L>4){
                                        Off(R);
                                        OnFwd(L);
                                }else{
                                        Float(R);
                                        OnFwd(L);
 
                                }
 
                        }
 
                }else{
                        OnFwd(L+R);
 
                }
                Wait(10);
        }
 }

** コメント欄 [#tdf3dfd9]
コメントを書き込んでください。
#comment



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS