プログラム可能なセンサー
プログラム可能なセンサー とは、シミュレーションの実行中にスライダーから読み値を操作できる、通常のカスタムチップです。アラームしきい値をテストするためにppm値をスイープするCO2センサー。ファームウェアの動作を確認するために85°Cを超えて押し上げる温度プローブ。手で暗くする光センサー。
チップ自体は何も変わりません。はじめにで説明されているのと同じWebAssemblyコンポーネントです。このページで追加されるのは、再コンパイルや再起動をせずに、スライダー値を実行中のチップに運ぶ配線です。
契約、3つの部分
Section titled “契約、3つの部分”すべてのプログラム可能なセンサーは、これら3つの部品で構成され、それ以外はありません。
1. 属性 が調整可能な値を保持します。
S.ppm = vx_attr_register("ppm", 1000);2. chip.json の controls エントリ が画面上にスライダーを配置します。これは 同じIDで 属性を指定します:
"controls": [ { "id": "ppm", "label": "CO2 (ppm)", "type": "range", "min": 400, "max": 5000, "step": 10, "unit": "ppm" }]3. コードが属性を再読み取りする たびに、値が必要になります:
double ppm = vx_attr_read(S.ppm); /* 現在のスライダーの値 */Run を押し、チップをクリックすると、次のように表示されます:

この3番目のポイントが、人々がつまずく点です。chip_setup() で属性を一度読み取って変数にキャッシュすると、スライダーは表示され、動いても、まったく何も起こりません。vx_attr_read は安価です。タイマーコールバック、I2C読み取りハンドラー、値が実際に必要な場所ならどこでも呼び出してください。
値がチップに届く仕組み
Section titled “値がチップに届く仕組み”2つのシミュレーションエンジンは異なる経路をたどり、障害モードも異なるため、理解する価値があります。
| ステップ | 何が起こるか |
|---|---|
| スライダーをドラッグする | パネルが、このチップインスタンスをキーとしてセンサー更新レジストリに書き込みます |
| ブラウザエンジン (AVR、RP2040、ブラウザ内ESP32) | 値は、実行中のWebAssemblyが vx_attr_read のたびに読み取る属性マップに直接書き込まれます。メッセージパッシングも再起動もありません |
| QEMU 上の ESP32 | チップはワーカー内にあるため、値は属性更新としてそこに転送され、そこで適用されます |
| 250 ms の静寂ごと | 最後の値がコンポーネントの保存済みプロパティにミラーリングされるため、スライダー位置は保存と再読み込み後も維持されます |
知っておくべき2つの結果:
- 「適用」ステップはありません。 次の
vx_attr_readは新しい値を返します。チップが属性を1秒に1回しか読み取らない場合、スライダーが目に見えて何かを行うまでにそのくらいの時間がかかります。 - パネルはインスタンスごとです。 1つのキャンバス上の同じチップのコピーが2つある場合、コントロールは各インスタンスの独自のマニフェストから合成されるため、スライダーは独立しています。
設計時のデフォルトとライブ値
Section titled “設計時のデフォルトとライブ値”これらは異なる画面であり、人々はこれらを混同します:
- 停止中: チップを右クリックして部品インスペクターを開きます。そこで設定したものは、属性の保存済みデフォルト、つまりチップが起動するときの値です。
- 実行中: チップをクリックします。スライダーパネルが開きます。そこで設定したものは、即座に適用されるライブ値です。
まずは試してみる
Section titled “まずは試してみる”すべてのパターンには、ギャラリーに実行可能な回路があります。Run を押して、チップをクリックしてください:
| 例 | 何を学ぶか |
|---|---|
| CO2センサー (ライブスライダー) | アナログのレシピ: スライダーから電圧へ、analogRead へ |
| I2C環境センサー (ライブスライダー) | 0x44 のレジスタマップの背後にある2つのスライダー |
| モーションセンサー (シミュレートボタン) | button コントロール: 瞬間トリガーとホールドスライダー |
| ナイトライト (対数ルクススライダー) | scale: "log": 1つのスライダーで5桁のルクス、ランプは50 lx未満でトリップ |
| SPI温度計 (ライブスライダー) | SPIスレーブタイミング: CSの立ち下がりエッジでラッチ |
| UART空気センサー (ライブスライダー) | SoftwareSerialへのプッシュ型シリアルセンサー |
次のステップ
Section titled “次のステップ”- チュートリアル: アナログCO2センサー
— 空のチップから
analogReadがスライダーを追跡するまでの、最短の完全な例。 - チュートリアル: I2C経由の温度と湿度 — デジタルプロトコルセンサーのパターン。2つのスライダーとレジスタマップを使用します。
controlsリファレンス — すべてのフィールド、自動フォールバックルール、スライダーが何もしない場合に確認すべきこと。