最近のハイテクレゴ製品の共通プロトコル「
LWP」を使うといろいろ接続できます。LEGOマリオを使って色選択アプリができました!
2020年7月発売の「レゴ(LEGO) スーパーマリオ レゴ(R)マリオ(TM) と ぼうけんのはじまり 〜 スターターセット 71360」
BLE接続できるとのことで、試してみました。(参考、「レゴ スーパーマリオ」7/10日本先行発売、モーションセンサーとカラーセンサー搭載 | マイナビニュース、LEGO Marioをセンサとして利用したい(1)|Koji Sekiguchi|note)
「LWP debugger」
加速度、ジェスチャーセンサー、カラーバーコード、カラーセンサー、コスチューム用の6bitデジタル入力、バッテリー残量などが並びます。アップデートすると登場する「Events 0x0055」のみ出力にも対応していますが、どう使うかは謎です。もし、効果音を鳴らしたり、喋らせたり、液晶のパターンを変えられたら、きっともっと楽しい!
「colorpicker by BLE」
LWP(Lego Wireless Protocol)を使いやすくESモジュールにして、24bitカラーセンサーの値をリアルタイムに画面に反映させるリアル色選択アプリ「colorpicker」を作ってみました。アプリやウェブの色選びが楽しくなるかも?
プログラムは下記のようにシンプルです。
<button id=btnc>connect BLE</button>
<button id=btnd>disconnect BLE</button>
<br>
<input id=inp>
<button id=btnpick>pick a color</button><br>
<textarea id=res></textarea>
<script type="module">
import { LWP } from "./LWP.js";
btnc.onclick = async () => {
const lwp = new LWP();
lwp.addDataListener(data => {
const rgb = data.ports[1].modes[1].value;
if (rgb) {
console.log(rgb);
document.body.style.backgroundColor = `rgb(${rgb.join(",")})`;
title.style.color = `rgb(${rgb.reduce((p, cur) => p + cur) < 127 * 3 ? "255,255,255" : "0,0,0"})`;
inp.value = "#" + rgb.map(c => c.toString(16)).map(c => c.length == 1 ? "0" + c : c).join("");
}
});
await lwp.connect({ autoCollect: false });
await lwp.startPortInput(1, 1);
btnpick.onclick = () => res.value += `"${inp.value}"\n`;
btnd.onclick = () => lwp.disconnect();
};
</script>
これで外部センサーも手に入ったので、先日のラジコンと合わせた本格ロボットづくりができそうです!
links
- Web BluetoothでつなぐLEGOテクニックシリーズ、なんと25種類の入出力!