2023年04月26日 更新
どうも、クラゲジュニアです。
前回の「p5.js Web Editor上でBlueJellyをつかってみた」に引き続き、今度はp5.jsライブラリとmicro:bitを連携しました。
p5.jsで扱えるビジュアル的なUIで実際に存在するマイコンボードが動かせると、色々なことができそうです。
micro:bitに下記のプログラムを書き込みます。
https://makecode.microbit.org/_3XV23VK5EfKW
次に、下記リンクのp5.js Web Editorに開きます。
https://editor.p5js.org/henjin01_Fab/sketches/XJhMz7dxL
p5.jsの実行ボタン▶
をクリックし、Preview
に表示されるページ内のScan
をクリックすればBLEデバイスの一覧が表示されます。
一覧からデバイスを選択して接続することで、そのデバイス名がページ内に表示されます。
そのあと、Scan
の下にある5x5のグリッドをクリックすると、対応するmicro:bit側のLEDが点灯します。
ブラウザの内容とmicro:bitの動作が一致していることが確認できます!
p5.jsライブラリとBlueJellyの組み合わせに関する内容について説明します。
まず、実際に送信している処理はdraw
関数内のble.write
で、この送信はcounter
変数が3より大きくなった時に実行されるようになっています。
これは、draw
関数のループ頻度が早いことで、ble.write
の処理が追い付かなくなる事象を防ぐために置いています。
countの数が大きくなればなるほどBLE送信の頻度は鈍くなりますが、countの数を小さくしすぎると前述の事象が発生するため、実行しながら適切な頻度を模索する必要があります。
let counter = 0;
function draw() {
if (mouseIsPressed) {
...
if (counter > 3) {
const textEncoder = new TextEncoder();
ble.write(
"UUID1",
textEncoder.encode(
`${Math.floor(mouseX / 100)},${Math.floor(mouseY / 100)}\n`
)
);
counter = 0;
} else {
counter++;
}
}
}
今回はp5.jsライブラリとmicro:bitを連携するためのコツについてお話しました。p5.jsのビジュアルとデバイスが連携できると色々なことができそうですね!
以上です。