2023-01-09
最近のハイテクレゴ製品の共通プロトコル「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種類の入出力!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS