NakaYoshi's Adventure in Wonder Land

回転式ヘリコプター

子供のころ、デパートの屋上などにあったゲームです。うまくヘリポートに着陸させればポイントになるというものでした。
オモチャ屋さんでも売ってた記憶があります。(買ってはもらえなかったですが)

1号(試作品)
heli-1.1 アームを平行四辺形として、機体を地面と平行になるようにしています。RCXの後ろにモーターが1個あります。モーターからは90度に回転を変えて、シャフトとパイプで機体に動力をつたえています。
heli-1.2 ここからはよく見えませんが、シャフトとパイプでつたえた動力は再度90度回転してローターを回します。多少なりとも揚力をかせごうとプロペラを曲げてみました。少しは風がおこるものの、効果はありません。 (^^;;;;
heli-1.3 動かしているところです。プロペラによる揚力が得られませんので、パイプが回転したときに真っ直ぐになろうという力だけで浮いています。約1cmくらいしか浮きません。また、支柱まわりの回転も、単に機体を動かす時のフリクションにより自然に回転しているだけで、きわめてバランス取りが難しく、こりゃあきらかに失敗作です。

2号(一応完成品)
heli-2.1 ここで、大型ターンテーブルを手に入れましたので、支柱部分に使うこととし、外 側のギアで回転させることにしました。
RCX から下に延びているコードの先にはタッチセンサーがついており、これを押すと機体が動き、離すと停止するようにします。
heli-2.2 機体は極力軽量化を図りました。このため、機体を平行に保つのはあきらめました。 
どうせ揚力を得られないのでローターも簡素化しました。
heli-2.3 これらの改良? により、機体はアームとほぼ並行まで浮上するようになり、支柱 を中心とした回転もスムーズになりました。(強制的に回してるんですけどね) 
タッチセンサーを離したときの停止に最初 Float を使ってみたんですが、ギア等のフリクションにより「ガガッ」と停止するので、プログラムは下記のようにしました。

// 回転式ヘリコプター Ver.2

task main(){
        int i;
        int pw;
        i = 0;
        SetSensor(SENSOR_1, SENSOR_TOUCH);
        Float(OUT_A);
        
        while(true){
                if(SENSOR_1 == 1){
                        i = 1;
                        SetPower(OUT_A, 7);
                        OnFwd(OUT_A);
                }else{
                        if(i == 1){
                                i = 0;
                                pw=6;
                                while(pw > 0){
                                        SetPower(OUT_A, pw);
                                        OnFor(OUT_A, 50);
                                        pw = pw-1;
                                }
                                Float(OUT_A);
                        }else{
                                Float(OUT_A);
                        }
                }
        }
}

これでなんとか思ったものができました。
子供たちも楽しんでます。 (^^;;;;
でも、ヘリポートに LEGO のガチャポンのボールを置いて機体ではじいて「サッカーだー」とかいって遊んでるので、お父さんはちょっと悲しい。

[ Before ] [ HOME ][NeXT]