Help us understand the problem. What is going on with this article?

enebularとobnizで鏡餅を動かしてみた

はじめに

2019年11月に行われた第3回 ビジュアルプログラミング交流会 という enebular と obniz を使ったハンズオンに参加して2つのビジュアルプログラミングを繋げて使う方法を学びました。

また最近はLEGOなどを使って簡単に動くものを作ることができるという事を ゆるメカトロ というグループで知りました。

そこで今回は、これらを組み合わせて何か作ってみようと考えた結果、昨年は クリスマスツリーを点滅させてみた ので、今年はお正月に向けて鏡餅を動かしてみます!

image.png

使ったもの

  • enebular
  • obniz
  • LEGO Crazy Action Contraptions
  • Geek Servo
  • モバイルバッテリー
  • 100円ショップの鏡餅

LEGOは様々な種類のパーツが販売されていますが、「Crazy Action Contraptions」というテクニカルパーツのセットと、「Geek Servo」というモーターのセットを買う人が多いようなので、私も購入しました。

image.png

モーターを動かす

私が参加したハンズオン資料にモーターを動かす内容が公開されてます。
obnizハンズオン(ブロックプログラム)

ハンズオンではアクリル板を車体にしていますが、今回はLEGOで車体を組んでいます。
Geek ServoのDCモーターはobnizのブロックプログラムやライブラリの「DCMotor」をそのまま使って動かすことができました。サーボモーターについてもobnizのライブラリ「ServoMotor」を使って動かすことができます。

enebularとつなげる

enebularとobnizをつなげる部分のハンズオン資料は以下になります。
enebularとobnizをつなげて操作してみる

今回はハンズオンの内容に加えて以下の2つを使っています。
- enebularのダッシュボードからの操作
- サーボモーターで鏡餅を動かす

enebularのダッシュボードからの操作

obnizは簡単にウェブ上にボタンなどを作って操作ができますが、enebularでもダッシュボードというノードを使って簡単にボタンを作ることができます。

下の水色のノードが今回追加したダッシュボードのノードになります。
image.png

以下のようにダッシュボード画面からボタンを押して1秒や10秒動かしたり、スライドバーで動かす秒数を決めることができるようになります。
image.png

実際に作ったFlowは以下のとおりです。

[{"id":"7e1f4921.de6038","type":"inject","z":"f3932e61.b2911","name":"","topic":"","payload":"{\"duration\":1000}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":180,"y":60,"wires":[["4f1866f1.bda6f8","6bda8b28.6da214"]]},{"id":"4f1866f1.bda6f8","type":"debug","z":"f3932e61.b2911","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":538,"y":70,"wires":[]},{"id":"6bda8b28.6da214","type":"websocket out","z":"f3932e61.b2911","name":"","server":"6b499733.914c68","client":"","x":560,"y":180,"wires":[]},{"id":"eabb3700.074828","type":"template","z":"f3932e61.b2911","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{\"duration\": {{payload}} }","output":"str","x":360,"y":220,"wires":[["6bda8b28.6da214"]]},{"id":"5b241924.4bb128","type":"ui_button","z":"f3932e61.b2911","name":"","group":"872da47e.b58c08","order":1,"width":0,"height":0,"passthru":false,"label":"1 sec","tooltip":"","color":"","bgcolor":"","icon":"","payload":"{\"duration\":1000}","payloadType":"json","topic":"","x":150,"y":120,"wires":[["6bda8b28.6da214"]]},{"id":"61063876.eac8b8","type":"ui_button","z":"f3932e61.b2911","name":"","group":"872da47e.b58c08","order":2,"width":0,"height":0,"passthru":false,"label":"10 sec","tooltip":"","color":"","bgcolor":"","icon":"","payload":"{\"duration\":10000}","payloadType":"json","topic":"","x":150,"y":160,"wires":[["6bda8b28.6da214"]]},{"id":"63f4a4b0.c73f6c","type":"ui_slider","z":"f3932e61.b2911","name":"","label":"slider","tooltip":"","group":"872da47e.b58c08","order":4,"width":0,"height":0,"passthru":true,"outs":"end","topic":"","min":0,"max":"1000","step":1,"x":150,"y":220,"wires":[["eabb3700.074828"]]},{"id":"6b499733.914c68","type":"websocket-listener","z":"","path":"/ws","wholemsg":"false"},{"id":"872da47e.b58c08","type":"ui_group","z":0,"name":"鏡餅カー操作","tab":"49db2715.892e08","disp":true,"width":"6","collapse":false},{"id":"49db2715.892e08","type":"ui_tab","z":0,"name":"ホーム","icon":"dashboard","disabled":false,"hidden":false}]

サーボモーターの制御

ハンズオンの資料にあったDCモーター以外にサーボモーターを追加しています。
モーター周りのコードは以下の通りで、動いている間に鏡餅が動くようにしました。

        dm1 = obniz.wired("DCMotor",{forward:0, back:1});
        dm2 = obniz.wired("DCMotor",{forward:3, back:2});
        sm1 = obniz.wired("ServoMotor",{vcc:5, gnd:6, signal:4});
        ang1 = 90;
        ang2 = 0;
        while (true) {
          await ObnizUI.Util.wait(0);
          if (button.isTouching()) {
            dm2.move(true);
            dm1.move(true);
            if(ang1==180){
              ang2 = 1
            }
            if(ang1 == 0){
              ang2 = 0
            }

            if(ang2 == 0){
              sm1.angle(++ang1);
            }else{
              sm1.angle(--ang1);
            }
          } else {
            dm1.stop();
            dm2.stop();
          }
        }

できたもの

実際に動かした様子を動画にしてあるので御覧ください。
IMB_PFYmrB.gif

Youtube の動画はこちら enebularとobnizで鏡餅を動かしてみた

終わりに

enebularのようなビジュアルプログラミングツールで簡単にプログラムが作れるのに加えて、動くモノ自体を簡単に作ることができるLEGOはとても相性がいいツールだと感じました。
これからも楽しくいろいろなものを作っていこうと思います!

yskmjp
野良ハックチームという名前で活動しています。
https://qiita.com/yskmjp/items/cedbfd3f3980c42a8771
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした