obniz.oncloseでのサーボモータを初期角度にしたい



  • obnizにサーボモータを接続しています
    ゴミ箱の蓋の開け閉めを想定し、以下のような動作を実装したいです

    1. 初期は0度
    2. ボタンを押すと90度
    3. 終了時は0度に戻る

    「3」を実装するため、oncloseでservo.angle(0)としていますが、サーボモータの応答の遅延のせいか、0度に戻りません。
    obnizのプログラムの工夫などで、0度に戻す方法はございますでしょうか?



  • @Mamoru-Kashiwagi さん

    oncloseはobnizとの接続が切れた直"後"に呼ばれますので、そこでobnizに対する指示(サーボモーターの角度変更)を行うことはできません。

    たとえば、Closeボタンを作り、そこが押されたときに終了処理(サーボモーターを0度にする)を行い、obnizとの接続を切る というのはいかがでしょうか。

    サプルプログラム

    <!-- HTML Example -->
    <html>
      <head>
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
        <script src="https://unpkg.com/obniz@2.0.3/obniz.js"></script>
      </head>
      <body>
    
        <div id="obniz-debug"></div>
        <button id="close">close</button>
    
        <script>
          var obniz = new Obniz("obniz_id");
          obniz.onconnect = async function () {
            var servo = obniz.wired("ServoMotor", {gnd:0, vcc:1, signal:2});
            servo.angle(90); 
    
            $("#close").on("click",async function(){
              servo.angle(0);
              await obniz.wait(100);//応答待ち
              obniz.close();
            })
          };
        </script>
      </body>
    </html>
    

Log in to reply
 

SUGGESTED TOPICS

  • 2
  • 2
  • 6
  • 2
  • 2
  • 1
  • 2
  • 2