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