This website is available for multi language.

部品を使う:モーターを動かしてみよう

obnizに部品を繋いでブロックプログラムで動かしてみましょう。

今回は小型DCモーターを繋いでみます。おもちゃなどでもよく使われている電気を流すと回転するモーターです。

接続

obnizの場合ioのどこに接続しても良いのですが、今回は0番と1番ピンに接続します。

これでobnizの0と1に電流を流せばモーターが回ります。

モーターブロック

DCモーターはブロックとして用意されているので、ブロックプログラムではそれを利用します。

「動く」カテゴリの中に「DCMotor」というのがあります。これがモーター用のブロックになります。

早速使ってみましょう。

プログラム

先に完成したプログラムを紹介します。

今回挑戦するのはプログラムを動かしている画面でボタンを押したら押している間だけモーターが回るようにする というプログラムです。

<!-- 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="UIButton" id="80uQ37Yg!_RM@zbm[`cF">button</variable>
    <variable type="UIButton" id="#7$4fAkr(P%;.%JaKIy`">backbutton</variable>
    <variable type="UIButton" id="akidXEU*0XQ}VT^!o6Sp">rightbutton</variable>
    <variable type="UIButton" id="KBvD*sLV+fD7(ieEkq5x">leftbutton</variable>
    <variable type="" id="hpvY$6K[tgY$$/L_8%xc">count</variable>
    <variable type="dcmotor" id="V?6USN(jVhQ,P{82]/*M">dcmotor</variable>
    <variable type="airobotkit" id="Jk=/mw~HxfZs@VDVmFYY">airobotkit</variable>
    <variable type="led" id="!MAt1@Dsy)#f.p,K@;=%">led</variable>
  </variables>
  <block type="obniz_connect" id="HDp1mlcGAj5s`;!=llnb" x="135" y="63">
    <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
    <value name="obniz_id">
      <shadow type="text" id="5TP31WDvYyD%Gwf+wL1.">
        <field name="TEXT">OBNIZ_ID_HERE</field>
      </shadow>
    </value>
    <next>
      <block type="obniz_ui_button" id="+XPe3N3Ik`Q03;fDxOr?">
        <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
        <value name="text">
          <shadow type="text" id="t8u?hB@Du;uk})idpxbu">
            <field name="TEXT">text</field>
          </shadow>
        </value>
        <next>
          <block type="obniz_parts_dcmotor_wired" id="KMvijnuH]p7_fixOk`:W">
            <field name="obniz" id="X2:3=S(hsdv0mk{aavHW" variabletype="obniz">obniz</field>
            <field name="DCMotor" id="V?6USN(jVhQ,P{82]/*M" variabletype="dcmotor">dcmotor</field>
            <value name="forward">
              <shadow type="math_number" id="$VA8(eKRvU1%EKP0wjej">
                <field name="NUM">0</field>
              </shadow>
            </value>
            <value name="back">
              <shadow type="math_number" id="*m3[z@1NfAaul$w^bzS]">
                <field name="NUM">1</field>
              </shadow>
            </value>
            <next>
              <block type="obniz_util_repeat" id="(~5j/lhm/]dIH[20H`D9">
                <statement name="DO">
                  <block type="controls_if" id="/X}ba1{+Oi_`wVmUu~|X">
                    <mutation else="1"></mutation>
                    <value name="IF0">
                      <shadow type="logic_boolean" id="5m0M4WR4:2BPfC|_hGkd">
                        <field name="BOOL">TRUE</field>
                      </shadow>
                      <block type="obniz_ui_button_touch" id="Lbc.F/!m0q?A/1w/EK]4">
                        <field name="button" id="80uQ37Yg!_RM@zbm[`cF" variabletype="UIButton">button</field>
                      </block>
                    </value>
                    <statement name="DO0">
                      <block type="obniz_parts_dcmotor_move" id="`,EN+UJOcRGK!!x2U!/u">
                        <field name="DCMotor" id="V?6USN(jVhQ,P{82]/*M" variabletype="dcmotor">dcmotor</field>
                        <field name="direction">true</field>
                      </block>
                    </statement>
                    <statement name="ELSE">
                      <block type="obniz_parts_dcmotor_stop" id="_GU%brb,*Zi-0T+=MvEc">
                        <field name="DCMotor" id="V?6USN(jVhQ,P{82]/*M" variabletype="dcmotor">dcmotor</field>
                      </block>
                    </statement>
                  </block>
                </statement>
              </block>
            </next>
          </block>
        </next>
      </block>
    </next>
  </block>
</xml>

まずは、モーターがどこにつながっているのかを設定して、モーターを使えるようにする必要があります。
obnizにつないで、ボタンを画面に表示したあとに行います。

forward:0, back:1 とありますが、これはモーターの2本の線を0と1につないだよ ということになります。

そしてループで繰り返し画面のボタンが押されているかを確認します。
ボタンが押されていれば、「dcmotorをforwardへ回転させる」ブロックが実行されるので、モーターを回すようなコマンドがobnizに届いてモーターが回ります。
逆に、押されていなければモーターを止めようとします。

これを実行するとこのようになります。



Next : JavaScriptにステップアップ

最短で翌日に届きます

obniz BoardはAmazonや公式ストアから購入できます。最短で当日出荷いたします。
取り扱い店舗はこちらから。

製品紹介

フォーラム

obnizフォーラムでは、obnizユーザー同士で意見交換することができます。
疑問・質問もお気軽にどうぞ。

フォーラム

お問い合わせ

製品・サービスに関するお問い合わせや、導入・開発のご相談など、お気軽にお問い合わせください。

お問い合わせフォーム