1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

p5.toio を使ったシンプルな p5.js のプログラム:接続中の toio の数の表示や move()、rotate() などによる走行

Last updated at Posted at 2024-02-08

過去に以下の記事を書いたことがあったり、その後、モノ作り系の展示イベント用の作品作りに利用している p5.toio の話です。

●toio をブラウザ上から簡単制御! p5.js用ライブラリの p5.toio の始め方(p5.js Web Editor上からの利用) - Qiita
 https://qiita.com/youtoy/items/0544183ed0f0dba65f51

上記の記事ではセットアップ方法と、以下の動作をさせるシンプルなプログラムを掲載していました。

  • toio との接続
  • toio で音を鳴らす
  • toio をその場で回転させる(モーターの制御、move() を利用)
  • 上記の回転動作を停止させるモーターの停止

今回の内容

今回は、以下の内容を試してみます。

  • toio との接続
  • 接続中の toio の数をキャンバス上に表示
  • move() を使い toio がある円周上を走るような動き
    • 円の半径を異なる 2種類の大きさにする
  • rotate() を使い toio をその場で回転させる
  • stop() で上記のモーターを使った動作を停止させる

なお、前回の記事で書いていたセットアップ周りの話は省略します。

プログラムの内容

それでは、今回作ったプログラムの話です。

今回のプログラムの内容は、以下のとおりです。

const gCubes = [];

function setup() {
  createCanvas(640, 480);
}

function draw() {
  background(0);

  drawToioNum();
}

function drawToioNum() {
  fill(255);
  textSize(32);
  textAlign(LEFT, CENTER);
  text(`toioの接続数: ${gCubes.length}`, width * 0.1, height * 0.4);
}

function keyPressed() {
  if (key === "f") {
    P5tCube.connectNewP5tCube().then((cube) => gCubes.push(cube));
  } else if (key === "1" || key === "2") {
    const rate = key === "1" ? 0.3 : 0.6;
    const speed = 80;
    moveCube(rate, speed);
  } else if (key === "3") {
    rotateCube(60);
  } else if (key === "a") {
    stopCube();
  }
}

function moveCube(rate, speed) {
  console.log("move");
  gCubes[0]?.move(speed, speed * rate, 0);
}

function rotateCube(speed) {
  console.log("rotate");
  gCubes[0]?.rotate(speed, 0);
}

function stopCube() {
  console.log("stop");
  gCubes[0]?.stop();
}

キーの押下時に、以下の動作をさせるようにします。

  • f: toio との接続
  • 1、2: toio がある円周上を走るような動き(円の半径は 2種類)
  • 3: toio をその場で回転させる
  • a: toio のモーターを静止させる

この処理を動作させた時の様子は、以下のとおりです。

また、toio の接続台数をキャンバスに表示する処理を入れているので、キャンバス上の表示は toio が接続されているかどうかによって、以下のように変化します。

image.png

image.png

公式ドキュメントの関連部分

以下は、公式ドキュメントの記載の中で、今回用いた処理が書かれた部分のリンクです。

●P5tCube | p5.toio > move
 https://tetunori.github.io/p5.toio/docs/cube/classes/p5tcube#move

image.png

●P5tCube | p5.toio > rotate
 https://tetunori.github.io/p5.toio/docs/cube/classes/p5tcube#rotate

image.png

●P5tCube | p5.toio > stop
 https://tetunori.github.io/p5.toio/docs/cube/classes/p5tcube#stop

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?