L@ d!a/DX K"Y^ҚTy"a"*z0uN(x`X@QCnSz{ڠl9:x#!W=vL&500n'$jy qn;2z,pY6bid9ddates2023-03-27T23:55:00etitlex6レゴ SPIKE プライムをJavaScriptで開発 on Webdtagsq#js #lego #KidsITcurlxhttps://fukuno.jig.jp/3897dbodyyH
Pythonで開発するレゴSPIKE Primeと、JS2Pyを使って、JavaScriptで開発可能にしました。
こちら、左右モーターでかわいく動くJavaScriptのプログラムのメイン。
for (;;) {
forward(300);
wait(500);
right(300);
wait(500);
left(300);
wait(1000);
}
下記がこのコードを動かすための準備プログラム。HubのマトリクスLEDを光らせるおまけ付き。
import { PrimeHub } from "pybricks/hubs.js";
import { Motor, ColorSensor, UltrasonicSensor, ForceSensor } from "pybricks/pupdevices.js";
import { Button, Color, Direction, Port, Side, Stop } from "pybricks/parameters.js";
import { DriveBase } from "pybricks/robotics.js";
import { wait, StopWatch } from "pybricks/tools.js";
import { Matrix } from "pybricks/geometry.js";
import { randint } from "urandom.js";
const hub = PrimeHub();
const X = 100;
const field = [
[0, X, 0, 0, 0],
[0, 0, 0, X, X],
[0, X, 0, X, 0],
[0, X, 0, 0, X],
[X, X, 0, X, X],
];
hub.display.icon(field)
const m1 = Motor(Port.A);
const m2 = Motor(Port.B);
function forward(n) {
print("forward");
m1.run(n);
m2.run(-n);
}
function right(n) {
print("right");
m1.run(n);
m2.stop();
}
function left(n) {
print("left");
m2.stop();
m1.run(-n);
}
print関数を使うと、Bluetoothを通じてリアルタイムにブラウザ画面に表示してくれて、デバッグに便利です。
こちら動かした様子。JavaScriptのプログラムをJS2Pyで、Python化して書き込み実行します。
ロボは、Matz葉がにロボコンの時に作ったものを組み換えて使用。
「PybricksHub test in JS」src on GitHub
Python版テストに、JS2Pyを加えて無事動作!エラーが起きた時のわかりにくさは課題です。ひとまず開発者コンソールを見て修正ください。
links
- レゴSPIKEプライムをJavaScriptで開発 on Web
- レゴ SPIKE プライムをC言語で開発 on Mac
cimgxKhttps://img.sabae.cc/data/20230327/305c50c2-1823-4126-991c-23497797b223.jpg