ロボットを動かしてみよう

モーターをobnizから回すことで、まずはロボットを動かしてみましょう。

まず、モバイルバッテリーなどでロボットのobnizに電源を供給して、QRが表示されることを確認します。
今回はスマートフォンをロボットに置かないので、スマートフォンを置く場所にモバイルバッテリーをおいてもいいですし、上面に両面テープで固定してもOKです。


プログラム

今回は「2秒だけ前に進んでとまる」という動きをしてみましょう。
これで配線できているか、モーターは回るのかの確認もできます。

最終的なプログラムはこのようになります。1つずつ見ていきましょう

<!-- Block Program Example -->
<xml xmlns="http://www.w3.org/1999/xhtml">
  <variables>
    <variable type="obniz" id="X2:3=S(hsdv0mk{aavHW">obniz</variable>
    <variable type="airobotkit" id="dM@b4U(RX!ghz6CVM_Yz">airobotkit</variable>
    <variable type="iothomekit" id="Ak%k%Q/^sjXCGi0o10k%">iothomekit</variable>
    <variable type="UIButton" id="#XOv=VY+x]D`|2#z.It:">button</variable>
    <variable type="led" id=":4dI?sJ8;uZ_N`=$.xc~">led</variable>
    <variable type="dcmotor" id=":a)?8fS7+t4^?0vut86#">dcmotor</variable>
    <variable type="UILabel" id="7uNH-)PlC=)X(DZ{qvuh">label</variable>
    <variable type="UILabel" id="X|t_eHRH_R?jrd-=nH%[">de</variable>
    <variable type="" id="/Uw|5HBAU[5$M*,MBJe.">i</variable>
  </variables>
  <block type="obniz_connect" id="3qAqTV`uZC*p~6]yozCx" x="99" y="117">
    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
    <value name="obniz_id">
      <shadow type="text" id="};zr4pE|M{nA~v~^+7_|">
        <field name="TEXT">OBNIZ_ID_HERE</field>
      </shadow>
    </value>
    <next>
      <block type="obniz_parts_airobotkit_wired" id="v2JVx^P(nPz-#UCKL2Qw">
        <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
        <field name="AIRobotKit" id="dM@b4U(RX!ghz6CVM_Yz" variabletype="airobotkit">airobotkit</field>
        <next>
          <block type="obniz_parts_airobotkit_move" id="I0R]metj_CZ9g!x9L-4W">
            <field name="AIRobotKit" id="dM@b4U(RX!ghz6CVM_Yz" variabletype="airobotkit">airobotkit</field>
            <field name="flag">forward</field>
            <next>
              <block type="obniz_util_wait" id="^O!MgY0zV-DAUcFGCZ[U">
                <value name="time">
                  <shadow type="math_number" id="/Ka,j~B8PypA_gQy_`y^">
                    <field name="NUM">2000</field>
                  </shadow>
                </value>
                <next>
                  <block type="obniz_parts_airobotkit_stop" id="HU1)ii855{{|ek4TGz~|">
                    <field name="AIRobotKit" id="dM@b4U(RX!ghz6CVM_Yz" variabletype="airobotkit">airobotkit</field>
                  </block>
                </next>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

プログラムでは、まず、obnizに接続します。

キットに関するものは「キット」とういうカテゴリの中にブロックが用意されています。
「ロボットを前に進ませる」「回転させる」もブロックとして用意されていて、並べるだけでロボットを動かせます。

まず、obnizがAIロボットキットに繋がれていることを設定します。
「キット」から「obnizにairobotkiを接続する」ブロックを持ってきて、obniz接続後につなげます。

これでロボットを動かせるようになりました。

同じくキットの中にある「airoobotkitを前へ動かす」というブロックがあります。
このブロックが実行されるとロボットは前へ進みます。
これをさっきのブロックの下につなげて前へ進めましょう。

あとは、少し時間が経ったらロボットを止めたいですね。

何メートル進んだたら という機能はないので、何秒経ったらとめる というプログラムにしてみましょう。

「ループ」にある「500待つ」というブロックがあります、これを持ってきてつなぎます。
そして「キット」にある「airobotkitを止める」ブロックを最後につなぎます。

「待つって何??」

「500待つ」とは500ミリ秒待つという意味です、1000ミリ秒で1秒ですから500は0.5秒のことです。

0.5秒はかなり短いですね。2000に増やして、ロボットを2秒だけ動くようにしましょう。

「2000待つ」といっても、ロボットが止まってヒマそうに2秒止まるわけじゃありません。
待つのはロボットではなくプログラムの方になります。つまり、「次のブロックの実行まで2000ミリ秒経つまでプログラムを一度止める」という意味です。
ロボットはこの1つ前で「前へ動かす」というブロックが実行されていて、モーターが回っています。
「2000待つ」でプログラムが一度止まりますが、モーターは回り続けています。これにより2秒だけロボットを前に進めることができます。
2秒たったところで「airobotkitを止める」が実行されます。
ここで初めてモーターを止められて、ロボットが止まります。

動かしてみる

実際に動かしてみましょう。ブロックプログラムを実行します。

しかし前に進まないことがあります。こんなふうに回ったり。
本当ならスマホを置く側を前に進ませたいのに。

これはモーターの配線が逆だからです。
組み立ての時に配線しましたが、向きはあまり気にせず配線しました。モーターというのは逆につなぐと逆に回転します。なので、配線によっては回転したり、逆に進んだりします。

正しい向きに動くように配線を変えてみましょう。
逆に回っているモーターの配線を逆にしましょう。

実行すれば、このようにロボットは前に進むと思います。

初めてのロボットプログラムができましたね!



Next : Button control

You will Get in Few Days

Circuit for Starter “obniz Board” is available on Amazon and other online stores.
You can get it at below

Our products and resellers

Forum

Visit our developer’s forum to discuss and discover technologies.

Forum

Contact

Feel free to contact out support and technical team.

Contact us