マイコンロボットキットは、マイコンにプログラムが書き込まれているので、組み立てれば遊ぶことができますが、プログラムを改造することで、LEDの色を変えたり、スピードを上げたり、オリジナルのロボットにすることができます。前回は組み立て、工作編でした。マイコンロボットの作り方1(工作・組み立て編)kohacraft.com2019.07.27ここでは、そのプログラムの改造の仕方をご紹介します。戦車のように方向転換するArduinoのインストールマイコンのプログラムは、Arduionのという世界的に有名なプログラム言語で作られています。情報が多く、インターネットや書籍で簡単に調べることができるので、マイコンのプログラム言語の入門としては最適です。IDEという開発環境(プログラムを書いたり、マイコンに書き込んだりすることができるソフト)をパソコンにインストールして、ちょっと設定が必要です。牛乳パックロボットのマイコンボードは、Arduinoの中でLeonardo(レオナルド)というマイコンボードと同様のマイコンボードとなっていますので、Arduinoをインストールして、Leonardo用に設定を変更します。Arduinoのインストールと、Leonardoの設定はこちらをご覧になって設定してください。マイコンロボットのプログラムはこちらです。このzipファイルをダウンロードをして、展開すると、「milkpackRobot」というフォルダが現れます。このフォルダの中を開くと、牛乳パックロボットのプログラムが入っています。IDEが起動して、プログラムを改造することができるようになります。プログラムの改造の手順プログラムの改造の手順はこの2段階となっています。IDEでプログラムを改造するコンパイル&プログラムの書き込みを行う簡単に改造できることは以下の通りです。モーターのスピードを変えるLEDの色を変えるLEDの明るさを変えるまばたきの間隔を変えるサーボモーターのスピードを変えるサーボモーターの角度範囲を変えるちょこちょこ動く時のちょこちょと間隔を変えるリモコンのボタンを押された時の動作を変更する(上級者向け)どうやって改造するか、もっともわかりやすい改造としてLEDの色を変更しながら方法をご説明します。IDEでプログラムを改造するプログラムの18行目から20行目を見てください。このledRは赤いLEDを点灯させるかどうかを設定します。同様にledGは緑のLED、ledBは青いLEDを点灯させるかどうかの設定です。0だとOFF、1だとONします。赤、緑、青の3つの色のON、OFFを組み合わせることで、下の表のように、いろんな色に変更することができます。1となっているので、LEDは水色に光っています。試しに、ピンクにしてみましょう。プログラムを以下のように改造します。1:ONコンパイル&プログラムの書き込みを行う改造ができたら、左上の右矢印をクリックすると、プログラムがマイコンの命令に変換(コンパイルと言います)されて、マイコンに書き込まれます。水色に光っていたLEDが一旦消えて、ピンクに光り出します。プログラムの改造が成功しました。全角で数字を入力してしまった場合このようなエラーが出た場合、全角の文字「0」「1」で数字が書かれています。プログラムは半角の文字しか使えないので、日本語入力を英語入力に変更して「0」「1」で書き直してください。「スケッチ書き込み通にエラーが発生しました」と表示された場合は、マイコンとパソコンがUSBで接続されていません。[ツール]->[シリアルポート]でマイコンがつながっているシリアルポートを指定します。macの場合は、usbmodem****(*は数字)と表示されています。windowsの場合には、COM**(*は数字)となっています。その他の改造項目LEDの色と同じように、上の場所の数字を変更することで、モーターのスピードLEDの色LEDの明るさまばたきの間隔サーボモーターのスピードサーボモーターの角度範囲ちょこちょこ動く時のちょこちょこ間隔を簡単に変更できます。変更して、プログラムの改造を楽しんでください。ロボットプログラムの構成ロボットのプログラムは常にループロボットのプログラムは単純化すると以下のようになっていますセンサの情報を取得どう動くか決めるモーター、サーボなどを動かすこの3つを高速に繰り返して、細かい時間間隔ごとにロボットが動いています。この間隔を制御周期と言います。普通のロボットは、1秒間にだいたい100回程度の速さでこのループを繰り返していますが、工場のロボットのようなもっと高速で精密な動作が必要なロボットは、1秒間に1000回以上で繰り返しています。牛乳パックロボットでは、そこまで速くなくてもいいので、1秒に10回程度とゆっくりした速度でループしています。このループを、牛乳パックロボットのプログラムに当てはめると、リモコンのどのスイッチが押されているかチェックスイッチの組み合わせによってモーターの方向を決めるサーボを動かしたりやまばたき動作をするとなっています。リモコンのどのスイッチが押されているかチェックプログラムの132行目の「リモコン判定」という行から163行目までが、そのプログラムとなります。リモコンのスイッチは、上と下のスイッチ、左と右のスイッチでペアになっていて、それぞれ何も押されていない場合:5V上(左)が押された場合:3V下(右)が押された場合:2.5V上(左)と下(右)両方押された場合:1.9Vのような電圧となります。この信号をADコンバータでデジタル値に変換します。//左右ボタンの入力ピンの読み取りこの値を、if文によって区別して、どのボタンが押されたが判定しています。}スイッチの組み合わせによってモーターの方向を決める上下左右どのスイッチが押されているかわかったので、その組み合わせで、どう動くのか決めます。プログラムでは、170行目「リモコンの応じて動作」から438行目までとなっています。例として、187行目からの上が押された時のプログラムをみてみます。{ここでは、スイッチの押されている組み合わせを指定します。0と書くと、上スイッチがONで、下スイッチが0FFで、右スイッチがOFFで、左スイッチがOFFの時、すなわち上スイッチだけ押されている時となります。ledB);各LEDの色をもともと設定しておいた値にします。);モーターのスピードをもともと設定しておいた値にします。LOW);モーターにはAとBの2つの信号があって、AをON(HIGH)、BをOFF(LOW)にするとモーターが前進し、AをOFF(LOW)、BをON(HIGH)にするとバックします。A,B両方OFF(LOW)にするとモーターが停止します。このプログラムでは前進したいので、両方のモーターのAをON、BをOFFして、前に進みます。servoSpeed;サーボモーターの角度を計算します。現在の角度(servoRAngle)に、もともと設定しておいた角度(servoSpeed)を足し合わせます。これで角度が増えて、サーボの腕の角度が変化します。このように、スイッチの状態によって、これからの動作を決定しています。おもしろ機能として、上と下を両方押すとダッシュ、右と左を両方押すとちょこちょこ動く、隠し動作があります。「ダッシュ」の場合のプログラムは417行目からになります。);LEDを強制的に赤に設定して、モーターのスピードも強制的に255と最大にしています。これで、目が赤く光って、最大速度でダッシュします。まばたき動作」から479行目までになります。);}まばたきは、最初に作られたランダムな値をループが1回終了するごとに1減らしていって、最後の1だけ残っている時に、LEDをOFFします。することで、ランダムな時間に1回、LEDがOFFしてまばたきしているように見えます。}OFFにした次の周期には、LEDをもともと設定した色に変更します。次のまばたきのまでの時間をランダムに設定します。)*servoMax+90;複雑な式を使って、サーボモーターの角度が前後に揺れるように、角度を計算しています。//サーボに角度を設定するservoL.write(servoLAngleTemp);その角度を、サーボに伝えて、角度を変更します。ループの時間間隔このロボットのループは1秒間に10回です。この時間の間隔を決めているのが、489行目です。delay(100);delay(100)は100ミリ秒待つという、命令です。100ミリ秒は1秒に10回を意味しています。100を10にすることで、ループの時間が10ミリ秒になり、1秒間に100回ループを繰り返えすようになります。10にすることで、ループが速くなるため、まばたきが速くなり、腕を振るスピードが速くなります。逆に1000にすると、ループが遅くなるため、リモコンの反応が鈍くなり、まばたきや腕を振るスピードが遅くなります。上級者向きですが、スイッチを押された時の動作を改造してみましょう。右のモーターは前進しています。することで、右に動いたり、左に動いたりしているのですが、もっと急に曲がるように改造できます。停止しているモーターを逆に回転されることで、戦車のように、その場で回転できるようになります。右のモーターは前進と改造します。それでは改造してみましょう。235行目「右が押されていた時の動作」以降の248行目から251行をみてみす。LOW);motorR_BPinを「HIGH」に改造します。これで右のモーターが停止から逆回転に改造できました。258行目「左が押されていた時の動作」以降の271行目から274行目をみてみます。HIGH);motorL_BPinを「HIGH」に改造します。これで左のモーターが停止から逆回転に改造できました。これで、改造は完了です。左上の右矢印ボタンをクリックして、コンパイル&マイコンに書き込んでみましょう。右、左のボタンを押すと、その場で回転するようになりました。このように、いろいろ改造することが可能です。コンパイルでエラーが出て、どうにもできなくなったら、また、元のプログラムをダウンロードして、それから改造してみてください。このプログラムで遊べるロボットは、こちらで販売しています。コメントをキャンセルメールアドレスが公開されることはありません。ver.24iphone9mbedプログラム講座21mbed開発環境20minecraft2イベント30オリジナルセット作り方44ソフト3ファミコン46プログラム3作品紹介コーナー2修理35分解25工作19店長2料理13電子工作300音楽6養殖2お問い合わせ。