Skip to content

v0.2.1

Choose a tag to compare

@tarosay tarosay released this 08 Aug 19:49

ブラウザにも対応しました。これでインストールせずに使えるようになりました。
そして新たにサーボモーターと超音波距離センサ―のブロックを追加しました。

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