Skip to content

v0.2.3

Choose a tag to compare

@tarosay tarosay released this 12 Aug 16:26
· 1 commit to 83e76e2c978a23638eb5f93a162152aeb73e7b0e since this release

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 を参照してください。