Releases: tarosay/scratch3-uiapduino
Release list
v0.2.4
基板への書き込みが、Scratch のブロック 1 つで済むようになりました。
Arduino IDE も、ボードマネージャも、パソコンへの準備も要りません。
基板を書き込みモードにして、ブロックをクリックするだけです。
| 使い方 | 中身 | |
|---|---|---|
| Xcratch 版 | 下の URL を「拡張機能を追加 → Extension Loader」に入れる | インストール不要。Chrome か Edge が要る |
| デスクトップ版 | 同梱のインストーラを入れる | Scratch Desktop に組み込んだもの |
https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs
このリンクを開けば、UIAPduino が入った状態で Xcratch が立ち上がります。
URL を貼る手間も要りません(Chrome か Edge で開いてください)。
✅ 今回は書き込み直しが要りません
プロトコルは 8 のままです。v0.2.3 の基板は、そのまま繋がります。
「基板の書き込み直しが必要です」を書かずに済む、初めてのリリースです。
そして中身は、その書き込み直しを楽にするものです。
🔥 スケッチを書き込むブロック(新規・2 個)
スケッチ (プロトコル 8) を書き込む … 押すと焼く。成功したら true
書き込みの ようす … 「書き込み中 45%」など
パレットの末尾にあります。手順は 3 つです。
- 基板を書き込みモードにする。 基板のボタンを押しながら USB ケーブルを接続し、
すぐにボタンを離します スケッチ (プロトコル 8) を書き込むをクリックする。
デバイス選択のダイアログに32V003が出るので、それを選びます- 進み具合は
書き込みの ようすに出ます。焼き終わると基板は自動で繋ぎ直ります
焼かれるのは、拡張機能に同梱してあるスケッチです。 だから拡張機能とスケッチの版が
ずれません。ブロックの名前に出ている番号が、そのまま焼かれるものの番号です。
詰まった画面から、そのまま直せます
プロトコルが合わない基板を繋ぐと、パレットが説明に差し替わります。
その説明の下に、同じ 2 つのブロックが並びます。
⚠ 基板のスケッチが合わないので つながりません
新しいスケッチの(ScratchUiapduino.ino)を書き込んでください。
新しいプロトコルバージョン: 8
https://github.com/tarosay/scratch3-uiapduino/releases/latest
───────────────
スケッチ (プロトコル 8) を書き込む ← 押せる
書き込みの ようす
押して焼き終わると自動で繋ぎ直り、パレットがブロックに戻ります。
「合いません」と言われた人が、その場で自分で直せます。
古い基板(プロトコル 5)で、この経路を実機で確認しています。
⚠ ブロックを直接クリックしてください
緑の旗では焼けません。「ブロックをクリックしてください」で止まります。
ブラウザがクリック直後であることを要求するためで、事故防止も兼ねています。
⚠ 「接続が失われました」が残ることがあります
繋がっている基板を抜いて書き込みモードに入れると出ます。
焼き終わって繋がり直しても、このアラートだけは消えません。 × で閉じてください。
Scratch 本体の作りによるもので、こちらでは閉じられません。
「合いません」と言われた基板を焼き直す場合は、繋がっていないので出ません。
⚠ デスクトップ版は入れ直してください
Xcratch 版は URL が同じなので、開き直すだけで新しくなります。
デスクトップ版は、アプリ側に書き込みモードの基板を許可する設定が要るので、
同梱のインストーラで入れ直さないと書き込みブロックが動きません。
(ブロックは並びますが「基板が書き込みモードになっていません」で止まります)
デスクトップ版はデバイス選択のダイアログが出ず、そのまま焼けます。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
スケッチは同梱していません。 拡張機能がスケッチを持っていて、ブロックがそれを焼きます。
v0.2.3 からの変更
- スケッチを書き込むブロックを 2 つ追加(上記)
- 書き込みブロック用のアイコンを追加。ほかのブロックと見分けられます
- デスクトップ版が、書き込みモードの基板(
1209:B803)を扱えるようになりました - README の書き込み手順を冒頭に移し、Arduino IDE の手順は記録として残しました
ブロックの動きは、ほかに何も変わっていません。 作品はそのまま動きます。
制限
- Windows のみです。macOS / Linux 版はありません
- Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
- 書き込みモードに入るには、ボタンを押しながら USB を挿す操作が要ります。
ここはブロックからはできません - 書き込みブロックは同梱のスケッチを焼きます。 自分で書き換えたスケッチを
焼いてある基板で押すと、上書きされます - 緑の旗からは焼けません(上記)
- 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%) です。
Xcratch 版とデスクトップ版の両方で、実際に基板を焼いて確認しています。
プロトコル 5 の基板を繋いで「合いません」の画面を出し、その中のブロックで
焼き直して繋がり直すところまで通しました。
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 を参照してください。
v0.2.2
シリアル通信ができるようになりました。 GPS や各種センサーなど、
シリアルで喋る機器を Scratch から読み書きできます。
| 使い方 | 中身 | |
|---|---|---|
| Xcratch 版 | 下の URL を「拡張機能を追加 → Extension Loader」に入れる | インストール不要。Chrome か Edge が要る |
| デスクトップ版 | 同梱のインストーラを入れる | Scratch Desktop に組み込んだもの |
https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs
⚠ 基板の書き込み直しが必要です
同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 6 → 7)。
v0.2.1 のままの基板は繋がりません。 Xcratch 版は URL が同じなので、
これまでの作品を開いても新しい版が読み込まれます。書き込み直すまでは、
ブロックの場所に理由が出ます。
⚠ 基板のスケッチが合わないので つながりません
新しいスケッチの(ScratchUiapduino.ino)を書き込んでください。
新しいプロトコルバージョン: 7
https://github.com/tarosay/scratch3-uiapduino/releases/latest
書き込み直して繋がると、ブロックが元に戻ります。
同梱物
| ファイル | 内容 |
|---|---|
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.10 で確認しています。
基板はお店やネットショップで購入してください。
配布しているのは 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 本で書けます。
v0.2.1 からの変更
シリアル通信のブロック(新規)
シリアル通信 ボーレート [9600▼] で開始する
シリアル通信 1行書き出す [Hello]
シリアル通信 数値を文字で書き出す [0]
シリアル通信 名前と数値を書き出す [x] = [0]
シリアル通信 文字列を書き出す [Hello]
シリアル通信 複数の数値をカンマくぎりで書き出す [リスト▼]
シリアル通信 1行読み取る
シリアル通信 つぎのいずれかの文字の手前まで読み取る [改行コード▼]
シリアル通信 文字列を読み取る
シリアル通信 つぎのいずれかの文字を受信したとき [改行コード▼]
シリアル通信 [改行コード▼] を受信した
最初に「ボーレートで開始する」を実行してください。 これを置かないと、
読み取りのブロックは何も返しません。
つぎのいずれかの文字を受信したとき はハットブロックです。受信を待つ間、
USB の通信は発生しません。基板から届いた時点で動き出します。
1行読み取る と 文字列を読み取る は、チェックを入れるとステージに表示できます。
表示しているだけでは中身は消えません。 ブロックで読んだときだけ取り出されます。
⚠ シリアルを開くと 4 つのピン名が使えなくなります
Tx と Rx は D15 / D16 に固定です。この 2 本は A5 / A6 と同じ物理ピンなので、
ボーレートで開始する を実行した後は、次の 4 つがピン操作のブロックから外れます。
| 送信 (Tx) | D15 = A5 |
| 受信 (Rx) | D16 = A6 |
シリアル通信を使わない作品では、4 つともこれまでどおり使えます。
配線は 基板の D15 → 相手の RX / 基板の D16 → 相手の TX / GND → GND です。
UIAPduino は 5V 駆動なので、5V の機器はそのまま繋がります。
⚠ 速度の上限を先に知っておいてください
USB-HID を通すため、シリアルの速度がそのまま出るわけではありません。
| 実測 | |
|---|---|
| キーボードとして打ち込む速さ | 約 25 文字/秒 |
| Scratch へ読み出す速さ | 約 330 バイト/秒 |
たとえば GPS を 9600 baud で繋いで、受け取った文をキーボードでエディタに
打たせる場合、2 文を打つ間に次の 7 秒ぶんを取りこぼします。
連続で全部を記録する用途には足りません。必要な文だけを選ぶ、
間引く、といった作り方をしてください。
⚠ 記号は日本語キーボードの PC だと変わることがあります
受け取った文字をキーボードのブロックで打たせる場合の話です。基板は US 配列の
キーコードを送るので、日本語配列の PC では一部の記号が別の文字になります。
たとえば * は ( になります。
英数字・カンマ・ピリオド・ハイフンは変わりません。 数値や座標はそのまま打てます。
これは PC 側のキーボード配列で決まるため、基板では直せません。
記号を正確に残したい場合は、キーボードで打つのではなく Scratch のリストに
入れてください。
ボードの固定先を 1.2.10 にしました
sketch.yaml が指定するボードパッケージの版を 1.2.9 から 1.2.10 に上げました。
基板に焼かれる中身は変わりません(両方でビルドして .hex がバイト単位で
一致することを確認しています)。
制限
- Windows のみです。macOS / Linux 版はありません
- Xcratch 版は Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
- シリアルの Tx / Rx は D15 / D16 の固定で、変更できません
- シリアルを開くと A5 / A6 のアナログ入力も使えなくなります(同じ物理ピンのため)
- 受信バッファは 256 バイトです。あふれた分は捨てられます
- Xcratch 版では、押しっぱなしのまま USB を抜いたときの後始末ができません。
ページから OS の状態は戻せないためです(実機では問題になりませんでした) - USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
「つなぐ」ブロックをもう一度実行してください
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1 / Chrome・Edge(Xcratch 版)
ボードパッケージ UIAP_HID:ch32v 1.2.10。
スケッチの Flash 使用量は 11148 / 16384 バイト (68%)、RAM は 532 / 2048 (25%) です。
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。
v0.2.1
ブラウザにも対応しました。これでインストールせずに使えるようになりました。
そして新たにサーボモーターと超音波距離センサ―のブロックを追加しました。
使い方が 2 通りになりました。ブロックの中身は同じものを共有しています。
| 使い方 | 中身 | |
|---|---|---|
| Xcratch 版(新規) | 下の URL を「拡張機能を追加 → Extension Loader」に入れる | インストール不要。Chrome か Edge が要る |
| デスクトップ版 | 同梱のインストーラを入れる | Scratch Desktop に組み込んだもの |
https://tarosay.github.io/scratch3-uiapduino/uiapduino.mjs
⚠ 基板の新規書き込みが必要です
同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 5 → 6)。
古いスケッチのままだと接続できません。Xcratch 版の場合、その理由がブロックの場所に出ます。
⚠ 基板のスケッチが合わないので つながりません
新しいスケッチの(ScratchUiapduino.ino)を書き込んでください。
新しいプロトコルバージョン: 6
https://github.com/tarosay/scratch3-uiapduino/releases/latest
書き込み直して繋がると、ブロックが元に戻ります。
Tools の設定は v0.2.0 から変わっていません。同梱の sketch.yaml に入っているので、
Arduino IDE 2.x でスケッチを開けば自動で選ばれます。
同梱物
| ファイル | 内容 |
|---|---|
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 を選びます。
基板はお店やネットショップで購入してください。
配布しているのは Arduino IDE の Core(ボード定義)で、基板そのものではありません。
2. 基板を書き込みモードにする
基板のボタンを押しながら USB ケーブルを接続し、すぐにボタンを離します。
3. 書き込む
Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino を
Arduino IDE で開いて「書き込み」を実行します。
書き込み器(WCH-LinkE など)は要りません。 USB ケーブル 1 本で書けます。
v0.2.0 からの変更
Xcratch 版(新規)
インストールが要りません。 Chrome か Edge で
Xcratch エディタ を開き、
「拡張機能を追加」→「Extension Loader」に上の URL を入れるだけです。
ブロック・日本語・接続モーダル・キーボード・マウス・ピン操作まで、
デスクトップ版と同じものが動きます。作った作品はデスクトップ版でも開けます。
Firefox と Safari では繋がりません。 WebHID という仕組みが無いためです。
その場合はブロックの代わりに理由が出ます。
サーボモーターのブロック(新規)
サーボの設定 周波数 [50] Hz 範囲 [500] 〜 [2270] µs
サーボ [2▼] を [90] 度にする
ピンは PWM を出せる 2 / 5 / A1 / A2 / A3 から選びます。
A1 A2 A3 は基板のシルクの名前で、A1 の値 のブロックと同じ物理ピンです。
設定ブロックは置かなくても動きます。 SG-90 で実測した値が既定です。
サーボを変えて可動域が合わないときだけ置いてください。
| 既定値 | |
|---|---|
| 周波数 | 50 Hz |
| パルス幅 | 500 〜 2270 µs |
⚠ 角度の刻みは約 7.8° です。 90 度と 95 度は同じ位置になります。
8bit の PWM で 50Hz を割ると、これが上限です。設定ブロックで周波数を上げると
細かくなります(400Hz で約 1°)。ただしサーボが高いフレームレートに耐えるかは製品次第です。
可動域はサーボごとに違います。 既定値は手元の SG-90 で実測して決めたものなので、
思った角度にならなければ設定ブロックで調整してください。
超音波距離センサ―のブロック(新規・HC-SR04)
距離計(HC-SR04)の設定 Echo [3] Trig [4]
距離
距離 は cm を返します。チェックを入れるとステージに表示できます。
配線は Echo → D3 / Trig → D4 / VCC → 5V / GND → GND。
UIAPduino は 5V 駆動なので Echo は直結できます。
ピンを出力にする ブロックは要りません。
設定ブロックは置かなくても動きます。測れなかったときは 0 を返します
(未接続でも、遠すぎて反射が返らなくても 0 です)。
HC-SR04P や US-100 などの互換品も同じ配線で使えます。
⚡ モーターの電源は分けてください
サーボモーターや DC モータードライバを強く動かしたいときは、電源ラインを分けられます。
実際には電源ラインを分けることを推奨します。
そのとき GND だけを UIAPduino と共通にし、外部電源は Vcc に繋がないでください。
外部電源 (+) ─────────── サーボモーター / モータードライバの電源
外部電源 (−) ─────┬───── サーボモーター / モータードライバの GND
└───── UIAPduino の GND ← GND だけ共通にする
UIAPduino の Vcc ────── USB から給電。外部電源は絶対に繋がない
⚠ 間違えて Vcc に繋いでも、基板はそのまま動いてしまいます。
配線ミスなのに正常に見えるので気づけません。通電する前に目で確かめてください。
USB からの給電でも小さなサーボ 1 個なら動きますが、SG-90 でも動き始めと停動で
500〜700mA 流れます。足りなくなるとサーボが止まるのではなく、
電圧が落ちて Scratch との接続が切れます。
アナログ値の 1023 は「電源電圧」です
A0 の値 などが返す 0〜1023 の上限は、固定の電圧ではなく基板の電源電圧です。
| 基板の状態 | 1023 が意味する電圧 |
|---|---|
| 出荷時(5V 駆動) | 5V |
| 3.3V に改造した基板 | 3.3V |
電圧 = 値 ÷ 1023 × 電源電圧
基板がどの版のスケッチかを名乗るようになりました
Flash が 16KB しかないため、将来「HID の代わりに別の機能を積んだ版」が出る前提で、
基板が自分の版を名乗るようにしました。違う版が焼かれていれば、接続時にそう表示されます。
制限
- Windows のみです。macOS / Linux 版はありません
- Xcratch 版は Chrome か Edge が要ります。 Firefox と Safari には WebHID がありません
- Xcratch 版では、押しっぱなしのまま USB を抜いたときの後始末ができません。
ページから OS の状態は戻せないためです(実機では問題になりませんでした) - サーボモーターの角度は約 7.8° 刻みです
- 距離計は測れなかったときの理由を区別しません(どちらも
0) - USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
「つなぐ」ブロックをもう一度実行してください
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1 / Chrome・Edge(Xcratch 版)
スケッチの Flash 使用量は 10504 / 16384 バイト (64%)、RAM は 272 / 2048 (13%) です。
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。
v0.2.0
UIAPduino が本物のキーボードとマウスになりました。
v0.1.1 まではピンの読み書きだけでしたが、USB-HID のブロックが入りました。
Scratch から PC 本体のキーボード入力とマウス操作ができます。
動く先は Scratch の中ではなく、そのときフォーカスのあるウィンドウです。
⚠ 基板の書き込み直しが必要です
同梱の Scratch-UIAPduino-3.29.1-sketch.zip を書き込んでください(プロトコル 1 → 5)。
古いスケッチのままだと接続時に弾かれます。開発者コンソール(Ctrl+Shift+I)に
デバイス=1 / この拡張機能=5 のように出ます。
USB 設定も変わりました(WebHID Only → Keyboard+Mouse+WebHID)。
同梱の sketch.yaml に書いてあるので、Arduino IDE 2.x でスケッチを開けば自動で選ばれます。
手で設定する場合は Tools → USB を変えてください。取り違えるとコンパイル時に止まります。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
Scratch-UIAPduino-3.29.1-sketch.zip |
UIAPduino に書き込むスケッチ |
アプリとスケッチは必ずこのリリースの組み合わせで使ってください。
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 を選びます。
基板はお店やネットショップで購入してください。
配布しているのは Arduino IDE の Core(ボード定義)で、基板そのものではありません。
2. 基板を書き込みモードにする
基板のボタンを押しながら USB ケーブルを接続し、すぐにボタンを離します。
3. 書き込む
Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino を
Arduino IDE で開いて「書き込み」を実行します。
書き込み器(WCH-LinkE など)は要りません。 USB ケーブル 1 本で書けます。
ツール → Upload method も既定の minichlink のままで構いません。
同梱の sketch.yaml にボードと Tools の設定が入っているので、
手で設定し直す必要はありません。
詳しくは Core 側の
README を見てください。
v0.1.1 からの変更
マウスのブロック(新規)
| ブロック | すること |
|---|---|
マウスを 右へ [ ] 下へ [ ] 動かす |
相対移動 |
マウスの [左▼] ボタンをクリックする |
左 / 右 / 真ん中 |
マウスの [左▼] ボタンでダブルクリックする |
判定時間はデバイス側で完結 |
マウスの [左▼] ボタンで 右へ [ ] 下へ [ ] ドラッグする |
押す→動かす→離すを一括 |
マウスの [左▼] ボタンでドラッグしながら〔 〕 |
囲みの中を実行する間だけ押しておく |
マウスのホイールを [下▼] に [ ] 回す |
ドラッグしながら〔 〕 の中に 動かす を並べれば、円や折れ線を 1 本のストロークとして
描けます。囲みを抜ければ必ず離れます。
キーボードのブロック(新規)
| ブロック | すること |
|---|---|
キーボードで [ ] と打つ |
文字列をタイプする |
キーボードの [Enter▼] キーを押して離す |
Enter / Tab / Backspace / 矢印 / F1〜F12 など 29 種類 |
キーボードの [Ctrl▼] を押しながら〔 〕 |
囲みの中を実行する間だけ修飾キーを押しておく |
Ctrl + C はこう書きます。
キーボードの [Ctrl▼] を押しながら〔
キーボードで [c] と打つ
〕
入れ子にできます。Ctrl の中に Shift を置けば Ctrl + Shift + … になります。
Shift を押しながら打つと、大文字小文字が入れ替わります。
| 書いたもの | 打たれるもの |
|---|---|
キーボードで [Hello] と打つ |
Hello |
Shift を押しながら 同上 |
hELLO |
Shift を押しながら [1] |
! |
「押したままにする」ブロックは置いていません
マウスのボタンもキーも、押しっぱなしにできるブロックを意図的に用意していません。
離すのを書き忘れると押されたまま残ります。そこで USB を抜かれると、操作していたアプリに
その状態が取り残されます。特に Shift や Ctrl は気づきにくく、
その後のすべてのキー入力が化けます。
押しっぱなしは ドラッグしながら〔 〕 と 押しながら〔 〕 の内側にしか作れません。
囲みを抜ければ必ず離れます。
暴走したときに止められること
Scratch から PC のキーボードとマウスを乗っ取れるということは、暴走もするということです。
| 手段 | 動き |
|---|---|
| 停止ボタン / 緑の旗 | 実行待ちを捨てて、キーとマウスをすべて離す |
| 「切断」ボタン / アプリを閉じる | 閉じる前に離す |
キーとマウスをすべて離す ブロック |
手動の非常停止 |
| デバイス側の見張り | 最後のコマンドから 5 秒で自動的に離す |
| USB を抜く | デバイスは必ず止まります。最終手段として成立します |
マウスが暴れていると停止ボタンを押すこと自体が難しくなります。
緑の旗を押す前に、キーボードだけで止められる手順(Alt+Tab など)を
確かめておくことをおすすめします。
A0〜A3 をステージに表示できます
A0 の値 〜 A3 の値 のブロックが増えました。チェックを入れると
4 つ別々にステージへ並び、緑の旗を押していなくても値が更新されます。
これまでの ピン [ ] の値 は引数があるためステージに出せませんでした。
キーボードの制限
- 日本語は打てません。 USB-HID はキーコードを送るだけで IME を通りません。
日本語を渡すと、無言で化けずに開発者コンソールへ警告が出ます - US 配列前提です。 日本語配列の PC では
@ : _ [ ] \ ^などがずれます。
英数字と空白は配列によらず正しく入ります Ctrlと組み合わせる文字は小文字で書いてください。[C]と大文字にすると
大文字を出すためのShiftが入り、Ctrl + Shift + cになります
制限
- Windows のみです。macOS / Linux 版はありません
- 押しっぱなしのまま USB を抜くと、操作していた他アプリのドラッグは残ります。
どこかを 1 回クリックすれば消えます - USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、
「つなぐ」ブロックをもう一度実行してください - 接続に失敗した理由は開発者コンソール (Ctrl+Shift+I) に出ます
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。
v0.1.1
Scratch 標準の接続フロー(ステータスボタンと接続モーダル)に対応しました。
スケッチは v0.1.0 と同じです。書き直す必要はありません。
v0.1.0 からの変更
拡張機能を追加すると接続画面が開きます
拡張機能ライブラリで UIAPduino を選ぶと、Scratch 標準の接続画面が自動的に開いて接続が始まります。
ブロックパレットのカテゴリ見出しに接続状態ボタンが出るようになりました。未接続なら「!」です。クリックすればいつでも接続をやり直せます。接続済みのボタンからは、状態の確認と切断ができます。
機器の一覧は出しません。UIAPduino は 1 台だけを前提にしているので、検索画面から直接「接続されました」へ進みます。
USB を抜いたときに画面で知らせます
これまでは「つながっている」ブロックが false になるだけでした。ステータスボタンが「!」に戻り、接続が切れたことを知らせるようになりました。
「つながっている」の意味が厳密になりました
USB を開いただけでは true になりません。デバイスとのやりとり(プロトコルのバージョン照合)まで終わってから true になります。
書き込んだスケッチが古い場合などに、つながったように見えてブロックが動かない、という状態が起きなくなりました。
日本語で表示されます
拡張機能一覧のカードの説明と、接続画面の文言が日本語になりました。**にほんご(ひらがな)**にも対応しています。
接続画面のマークが USB になりました
Bluetooth のマークが出ていたのを USB のマークに変えました。UIAPduino は USB-HID で接続するためです。
従来のブロックはそのままです
「UIAPduino につなぐ」ブロックは残してあります。保存済みのプロジェクトはそのまま開けます。 ブロックで接続した場合も、ステータスボタンは接続済みになります。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
Scratch-UIAPduino-3.29.1-sketch.zip |
UIAPduino に書き込むスケッチ(v0.1.0 と同一) |
スケッチについて
プロトコルのバージョンは 1 のままで、スケッチも v0.1.0 から変更ありません。
- v0.1.0 を使っていた方: アプリだけ入れ替えてください。書き込み直しは不要です
- はじめての方:
Scratch-UIAPduino-3.29.1-sketch.zipを解凍し、ScratchUiapduino.inoを Arduino IDE で開いて書き込みます。同梱のsketch.yamlにボードと Tools メニューの設定が入っているので、手で設定し直す必要はありません
プロトコルのバージョンが違うと接続できません。アプリとスケッチは同じリリースの組み合わせで使ってください。
使い方
1. アプリを入れる
インストーラを実行するか、portable 版を解凍して Scratch UIAPduino.exe を起動します。
公式 Scratch Desktop とは別のアプリとして扱われるので、両方を入れておけます。
2. つなぐ
UIAPduino を USB で挿し、拡張機能ライブラリから UIAPduino を選びます。接続画面が開いて接続されます。
接続画面を閉じてしまっても、ブロックパレットの「!」からやり直せます。
⚠ 起動時の警告について
コード署名をしていないため、初回起動時に
「Windows によって PC が保護されました」 (SmartScreen) が表示されます。
「詳細情報」→「実行」 で進めてください。
⚠ portable 版の解凍について
zip の直下にファイルが並んでいます (約 1,400 個)。
新しいフォルダを作ってから解凍してください。
「ここに解凍」を選ぶとファイルが散らばります。
エクスプローラーの「すべて展開」や 7-Zip の「解凍先: <名前>\」なら自動でフォルダが作られます。
ブロック
v0.1.0 から変更ありません。
| ブロック | 内容 |
|---|---|
| UIAPduino につなぐ | 接続する。成功で true |
| つながっている | 接続状態 |
| ピン [n] を [入力/出力/入力(プルアップ)] にする | pinMode |
| ピン [n] を [オン/オフ] にする | digitalWrite |
| ピン [n] が入っている | digitalRead |
| ピン [n] の出力を [0-255] にする | PWM |
| ピン [n] の値 | アナログ入力 (A0-A7) |
| 実行待ちのコマンドをクリアする | キューを捨てる |
使えないピン
D13 / D14 は USB D+ / D−、D17 は RESET です。
指定した場合はスケッチ側で弾きます (アナログでは A4 / A7 が該当)。
オンボード LED は D2 です。
PWM が出るのは D0 / D2 / D5 / D6 / D12 のみです。それ以外を指定するとエラーになります
(黙ってデジタル出力にはなりません)。
制限
- Windows のみです。macOS / Linux 版はありません
- USB を抜いても自動では再接続しません。挿し直したら「!」をクリックするか、「つなぐ」ブロックをもう一度実行してください
- 接続に失敗した理由は開発者コンソール (Ctrl+Shift+I) に出ます
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。
v0.1.0
Scratch 3.0 から UIAPduino (HID ProMicro CH32V003) を USB-HID (WebHID) で操作する拡張機能の初回リリースです。
同梱物
| ファイル | 内容 |
|---|---|
Scratch-UIAPduino-3.29.1-Setup.exe |
インストーラ |
Scratch-UIAPduino-3.29.1-portable.zip |
インストール不要版 |
Scratch-UIAPduino-3.29.1-sketch.zip |
UIAPduino に書き込むスケッチ |
アプリとスケッチは必ずこのリリースの組み合わせで使ってください。
プロトコルのバージョンが違うと「UIAPduino につなぐ」ブロックが false を返します
(このリリースはプロトコル 1)。
使い方
1. アプリを入れる
インストーラを実行するか、portable 版を解凍して Scratch UIAPduino.exe を起動します。
公式 Scratch Desktop とは別のアプリとして扱われるので、両方を入れておけます。
2. スケッチを書き込む
Scratch-UIAPduino-3.29.1-sketch.zip を解凍し、ScratchUiapduino.ino を Arduino IDE で開いて書き込みます。
同梱の sketch.yaml にボードと Tools メニューの設定が入っているので、手で設定し直す必要はありません。
3. つなぐ
UIAPduino を USB で挿し、拡張機能ライブラリから UIAPduino を選び、「UIAPduino につなぐ」ブロックを実行します。
⚠ 起動時の警告について
コード署名をしていないため、初回起動時に
「Windows によって PC が保護されました」 (SmartScreen) が表示されます。
「詳細情報」→「実行」 で進めてください。
⚠ portable 版の解凍について
zip の直下にファイルが並んでいます (約 1,400 個)。
新しいフォルダを作ってから解凍してください。
「ここに解凍」を選ぶとファイルが散らばります。
エクスプローラーの「すべて展開」や 7-Zip の「解凍先: <名前>\」なら自動でフォルダが作られます。
ブロック
| ブロック | 内容 |
|---|---|
| UIAPduino につなぐ | 接続する。成功で true |
| つながっている | 接続状態 |
| ピン [n] を [入力/出力/入力(プルアップ)] にする | pinMode |
| ピン [n] を [オン/オフ] にする | digitalWrite |
| ピン [n] が入っている | digitalRead |
| ピン [n] の出力を [0-255] にする | PWM |
| ピン [n] の値 | アナログ入力 (A0-A7) |
| 実行待ちのコマンドをクリアする | キューを捨てる |
使えないピン
D13 / D14 は USB D+ / D−、D17 は RESET です。
指定した場合はスケッチ側で弾きます (アナログでは A4 / A7 が該当)。
オンボード LED は D2 です。
PWM が出るのは D0 / D2 / D5 / D6 / D12 のみです。それ以外を指定するとエラーになります
(黙ってデジタル出力にはなりません)。
制限
- Windows のみです。macOS / Linux 版はありません
- USB を抜くと「つながっている」が
falseになります。挿し直したら「つなぐ」をもう一度実行してください (自動再接続はしません) - ブロックが失敗した場合の理由は開発者コンソール (Ctrl+Shift+I) に出ます
動作確認環境
Windows 11 / Node.js v16.20.0 / Electron 15.3.1
インストーラは 32bit ですが 64bit Windows でも動作します。
ライセンス
このリポジトリの成果物は BSD-3-Clause です。
ビルド成果物には上流 Scratch (Massachusetts Institute of Technology / Scratch Foundation) の
コードが含まれます。詳細は README を参照してください。