コンテンツにスキップ

コントロールリファレンス

chip.json の controls 配列は、シミュレーション実行中にパネルに表示される内容を記述します。各エントリは、name がエントリの id と一致する属性を駆動します。

フィールド 適用対象 意味
id すべて 必須。 このコントロールが駆動する属性。id のないエントリはスキップされます
type すべて スライダーの場合は "range"、モーメンタリトリガーの場合は "button"。その他の値は無視され、エントリは何も生成しません
label すべて コントロールの横に表示されるテキスト。属性の label にフォールバックし、次に id にフォールバックします
min range 下限値。属性の min にフォールバックし、次に 0 にフォールバックします
max range 上限値。属性の max にフォールバックし、次に 100 にフォールバックします
step range 増分。属性の step にフォールバックし、スパンが20より広い場合は 1、それ以外の場合は 0.01 にフォールバックします
unit range 値の後に表示されます。例:ppm や %。デフォルトでは空です
scale range "log" は対数スライダーになります。曲線が未定義のため、min が負の場合は無視されます

スライダーの初期位置はコントロールから取得されません。属性の default から取得され、min にフォールバックします。属性の default をコントロールの範囲内に保つか、そうしないとパネルが開いたときにハンドルが一端に固定されます。

チップの name から取得されます。name のないチップには「Custom Chip」と表示されます。

controls を記述する必要はまったくありません。

min と max の両方を宣言し、明示的なコントロールがまだ要求していない属性には、スライダーが自動的に付与されます。 そのラベルは属性の label から、ステップは属性の step から取得されるか、推論されます:type: "int" の場合は 1、それ以外の場合はスパンが20より広いと 1、そうでない場合は 0.01 です。単位は付きません。

つまり、controls はスライダーの名前変更、単位の追加、対数化、またはボタンの宣言にのみ必要です。実際的な結果は2つあります:

  • ライブコントロールが存在する前に書かれたチップは、多くの場合、編集なしですでに調整可能です。
  • 属性に min/max がなく、controls セクションもないチップは、パネルがまったく表示されません。これが、チップをクリックしても何も起こらないように見える通常の理由です。

"button" エントリは、リセットライン、「モーションのシミュレート」スタイルのイベント、およびレベルではなくエッジであるその他すべてのためのモーメンタリトリガーをレンダリングします:

モーションセンサーパネルのボタンコントロールとホールドタイムスライダー 押すと、属性が 1 になり、約150ミリ秒後に 0 に戻ります。そのため、チップは特定の瞬間を捉えようとするのではなく、非ゼロの読み取り値を「イベントが発生した」として扱う必要があります。

スライダーの位置は、操作を停止してから約250ミリ秒後に、コンポーネントの保存済みプロパティ(attrs 内)にミラーリングされ、保留中の値がマージされます。そのため、スライダーをドラッグしてもプロジェクトに毎ピクセル書き込まれるわけではなく、保存して再読み込みしても位置が維持される理由でもあります。

ミラーはコピーです。実行中のチップが読み取る値は、コントロールが動いた瞬間に適用されるライブの値です。

エンジン 値の到達方法
AVR、RP2040、ブラウザ内ESP32 WebAssemblyが vx_attr_read のたびに読み取る属性ストアに直接書き込まれます
QEMUバックエンド上のESP32 ワーカーに転送され、そこにあるチップランタイムの属性ストアに適用されます

どちらもライブです:再コンパイル、再起動、「適用」ボタンは不要です。唯一のレイテンシは、独自のコードが vx_attr_read を呼び出す頻度です。

ライブコントロールは、すべてのプランで無料です。それらを宣言するチップの書き込み、コンパイル、実行も同様です。隣接する2つの機能は有料です:AIにチップまたはセンサーを作成してもらうこと(Maker以上)、およびサーバー上にチップを保持してプロジェクト間で再利用するための My Chips ライブラリ(Pro)。

コントロールが機能しない場合

Section titled “コントロールが機能しない場合”
症状 原因
チップをクリックしてもパネルが開かない controls エントリがなく、min と max の両方を持つ属性もない、またはシミュレーションが停止している
特定のエントリがパネルにない その type が range でも button でもない、または id がない
スライダーは動くが何も変わらない チップが vx_attr_read を値が使用される場所で呼び出す代わりにキャッシュした
スライダーが間違った端から始まる 属性の default がコントロールの min/max の範囲外にある
値が整数でジャンプする スパンが20より広いため step が 1 と推論された;step を明示的に設定する
対数スライダーが線形である min が負の場合、scale: "log" は無視される