v0.2.3
NeoPixel(WS2812B)を光らせられるようになりました。 リングやテープを
Scratch から色で操れます。虹や流れる光も、ブロックを並べるだけで作れます。
| 使い方 | 中身 | |
|---|---|---|
| Xcratch 版 | 下の URL を「拡張機能を追加 → Extension Loader」に入れる | インストール不要。Chrome か Edge が要る |
| デスクトップ版 | 同梱のインストーラを入れる | Scratch Desktop に組み込んだもの |
https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs
⚠ 基板の書き込み直しが必要です
同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 7 → 8)。
v0.2.2 のままの基板は繋がりません。 Xcratch 版は URL が同じなので、
これまでの作品を開いても新しい版が読み込まれます。書き込み直すまでは、
ブロックの場所に理由が出ます。
⚠ 基板のスケッチが合わないので つながりません
新しいスケッチの(ScratchUiapduino.ino)を書き込んでください。
新しいプロトコルバージョン: 8
https://github.com/tarosay/scratch3-uiapduino/releases/latest
書き込み直して繋がると、ブロックが元に戻ります。
⚠ ボードパッケージも 1.2.12 に更新してください
今回は基板だけでなく、Arduino IDE のボードパッケージの更新も要ります。
NeoPixel を鳴らすライブラリ(NeoPixelmin)が 1.2.10 には入っていないためです。
古いままだとスケッチのコンパイルが通りません。
ボードマネージャで UIAPduino を 1.2.12 に更新してください。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
Scratch-UIAPduino-3.29.1-sketch.zip |
UIAPduino に書き込むスケッチ |
アプリとスケッチは必ずこのリリースの組み合わせで使ってください。
Xcratch 版を使う場合も、sketch.zip はここから取ってください。
UIAPduino に書き込む
1. Arduino IDE にボードを入れる(初回だけ)
ファイル → 環境設定 → 追加のボードマネージャのURL に次を追加します。
https://github.com/tarosay/board_manager_files/raw/main/package_uiap_hid_index.json
「ボードマネージャ」で UIAPduino を検索してインストールし、
ツール → ボード → UIAP_HID → HID ProMicro CH32V003 を選びます。
すでに入れている方は、必ずボードマネージャで更新してください。
今回のスケッチは 1.2.12 が要ります(前述)。
基板はお店やネットショップで購入してください。
配布しているのは Arduino IDE の Core(ボード定義)で、基板そのものではありません。
2. 基板を書き込みモードにする
基板のボタンを押しながら USB ケーブルを接続し、すぐにボタンを離します。
3. 書き込む
Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino を
Arduino IDE で開いて「書き込み」を実行します。Tools の設定は同梱の
sketch.yaml に入っているので、Arduino IDE 2.x なら自動で選ばれます。
書き込み器(WCH-LinkE など)は要りません。 USB ケーブル 1 本で書けます。
配線
| WS2812B 側 | UIAPduino 側 |
|---|---|
| DIN | D8 |
| VCC | 5V |
| GND | GND |
DIN は D8 の固定で、変更できません。 波形を SPI1 で作っている都合です。
v0.2.2 からの変更
NeoPixel のブロック(新規・14 個)
NeoPixel を [12] 個 明るさ [50] % で始める
NeoPixel の明るさを [50] % にする
NeoPixel の [1] 番を [■] にする
NeoPixel の [1] 番を 赤 [255] 緑 [0] 青 [0] にする
NeoPixel の [1] 番を 色 [0] 鮮やかさ [100] 明るさ [100] にする
NeoPixel の [1] 番から [3] 個を [■] にする
NeoPixel を全部 [■] にする
NeoPixel を消す
NeoPixel を [1] つ ずらす
NeoPixel を [20] % 暗くする
NeoPixel に虹を出す ずらし [0]
NeoPixel を表示する
NeoPixel をまとめて表示する〔 〕
NeoPixel の [1] 番の色
最初に「[ ] 個 明るさ [ ] % で始める」を実行してください。 これを置かないと、
色のブロックは何もしません。番号は 1 から数えます(Scratch のリストと同じ)。
置いただけで光ります。 色を決めるブロックは、そのつど表示まで行います。
速さが要るときは「まとめて表示する〔 〕」で囲む
囲みの中では光らず、囲みを抜けた瞬間にまとめて反映されます。
NeoPixel をまとめて表示する〔
NeoPixel の [1] 番を [赤] にする
NeoPixel の [2] 番を [青] にする
〕
1 回の通信に 12〜15ms かかるので、たくさんの LED を 1 個ずつ光らせると
アニメーションになりません。囲めば 1 回で送れます。
「虹を出す」の ずらし は 100 で一周します
色相の一周を LED の個数で割り当てます。ずらし はそれを回す量で、
0〜100 で一周です。100 を超えても余りを取るので、増え続ける値を
そのまま入れて構いません。
NeoPixel に虹を出す ずらし ((タイマー) * (20))
これで 5 秒に 1 回転します。数字を大きくすると速くなります。
「明るさ」と「暗くする」は別のものです
| 効き方 | |
|---|---|
明るさを [ ] % にする |
表示するときに掛かるだけ。元の色は残るので戻せます |
[ ] % 暗くする |
色そのものを書き換えます。繰り返すと消えていき、戻せません |
残像やフェードアウトを作るのは後者です。
⚠ 「始める」の個数は、実際の数を入れてください
多めに入れても光り方は変わりませんが、数に比例して通信が止まります。
12 個なら 0.38ms、64 個なら 2.05ms です。使う数を入れてください。
上限は 64 個です(1m 60 個のテープまで入ります)。
⚠ NeoPixel を始めると D8 が使えなくなります
始める を実行した後は、D8 がピン操作のブロックから外れます。
NeoPixel を使わない作品では、これまでどおり使えます。
D7 / D9 / D3 は空いたままです。 NeoPixel が使うのは D8 の 1 本だけです。
⚠ たくさん光らせるときは電源に気をつけてください
WS2812B は 1 個を白で全開にすると 60mA ほど流れます。64 個すべてを
白 100% にすると 3.8A になり、USB からは取れません。
明るさの既定を 50% にしてあるのはこのためです。数を増やすときは、
明るさを下げるか、LED 側に別の電源を用意してください。
そのときは GND だけを UIAPduino と共通にし、外部電源を Vcc に繋がないでください。
制限
- Windows のみです。macOS / Linux 版はありません
- Xcratch 版は Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
- NeoPixel の DIN は D8 の固定で、変更できません
- NeoPixel の上限は 64 個です
- NeoPixel は SD カード(SPI)と同時に使えません。どちらも SPI1 を使います
- シリアルの Tx / Rx は D15 / D16 の固定で、変更できません
- シリアルを開くと A5 / A6 のアナログ入力も使えなくなります(同じ物理ピンのため)
- Xcratch 版では、ページを読み込み直すたびに「始める」の実行が要ります
- Xcratch 版では、押しっぱなしのまま USB を抜いたときの後始末ができません。
ページから OS の状態は戻せないためです(実機では問題になりませんでした) - USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
「つなぐ」ブロックをもう一度実行してください
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1 / Chrome・Edge(Xcratch 版)
ボードパッケージ UIAP_HID:ch32v 1.2.12。
スケッチの Flash 使用量は 12040 / 16384 バイト (73%)、RAM は 744 / 2048 (36%) です。
NeoPixel は WS2812B の 12 連リングで確認しています。虹を回しながら
キーボードのブロックで文字を打たせても、取りこぼしも接続切れも起きませんでした。
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。