справочник по элементам управления
Массив controls в chip.json описывает, что показывает панель во время
симуляции. Каждая запись управляет атрибутом, чьё name совпадает
с id записи.
Поля записей
Заголовок раздела «Поля записей»| Поле | Применяется к | Значение |
|---|---|---|
id |
все | Обязательное. Атрибут, которым управляет этот элемент. Запись без id пропускается |
type |
все | "range" для ползунка, "button" для кнопки-триггера. Любое другое значение игнорируется, и запись ничего не создаёт |
label |
все | Текст рядом с элементом управления. Резервно используется label атрибута, затем id |
min |
range | Нижняя граница. Резервно используется min атрибута, затем 0 |
max |
range | Верхняя граница. Резервно используется max атрибута, затем 100 |
step |
range | Шаг. Резервно используется step атрибута, затем 1, если диапазон шире 20, иначе 0.01 |
unit |
range | Выводится после значения, например ppm или %. По умолчанию пусто |
scale |
range | "log" задаёт логарифмический ползунок. Игнорируется, если min отрицательное, так как кривая там не определена |
Начальное положение ползунка не берётся из элемента управления. Оно
берётся из default атрибута, с резервным значением min. Держите
default атрибута внутри диапазона элемента управления, иначе панель
откроется с ползунком, прижатым к одному из концов.
Заголовок панели
Заголовок раздела «Заголовок панели»Берётся из name чипа. Чип без name показывает “Custom Chip”.
Автоматическое резервное поведение
Заголовок раздела «Автоматическое резервное поведение»Вам вообще не нужно писать controls.
Любой атрибут, который объявляет и min, и max, и на который не
претендует ни один явный элемент управления, получает ползунок. Его
подпись берётся из label атрибута, шаг — из step атрибута или
выводится: 1 для type: "int", иначе 1, когда диапазон шире 20, и
0.01, когда нет. Единица измерения не добавляется.
Таким образом, controls нужен только для переименования ползунка,
добавления единицы измерения, логарифмической шкалы или объявления
кнопки. Два практических следствия:
- Чипы, написанные до появления живых элементов управления, часто уже настраиваются без каких-либо правок.
- Чип, у атрибутов которого нет
min/maxи нет разделаcontrols, вообще не показывает панель. Это обычная причина, по которой клик по чипу, кажется, ничего не делает.
Запись "button" создаёт кнопку-триггер для линий сброса, событий типа
“имитация движения” и всего остального, что является фронтом, а не
уровнем:
Нажатие переводит атрибут в 1 и обратно в 0 примерно
через 150 мс, поэтому ваш чип должен трактовать ненулевое значение как
“событие произошло”, а не пытаться поймать конкретный момент.
Где хранятся значения
Заголовок раздела «Где хранятся значения»Положения ползунков зеркалируются в сохранённые свойства компонента
(в attrs) примерно через 250 мс после того, как вы перестали их
двигать, с объединением ожидающих значений. Вот почему перетаскивание
ползунка не записывает в проект на каждый пиксель и почему положение
переживает сохранение и перезагрузку.
Зеркало — это копия. Значение, которое читает работающий чип, — это живое значение, применяемое в момент движения элемента управления.
| Движок | Как приходит значение |
|---|---|
| AVR, RP2040, ESP32 в браузере | Записывается напрямую в хранилище атрибутов, которое WebAssembly читает при каждом vx_attr_read |
| ESP32 на бэкенде QEMU | Пересылается в worker и применяется к хранилищу атрибутов среды выполнения чипа там |
Оба варианта живые: без перекомпиляции, без перезапуска, без кнопки
“Применить”. Единственная задержка — это то, как часто ваш собственный
код вызывает vx_attr_read.
Живые элементы управления бесплатны на любом тарифе, как и запись, компиляция и запуск чипа, который их объявляет. Две соседние функции платные: создание чипа или датчика с помощью ИИ (тариф Maker и выше) и библиотека My Chips, которая хранит чип на сервере для повторного использования в проектах (тариф Pro).
Когда элемент управления не работает
Заголовок раздела «Когда элемент управления не работает»| Симптом | Причина |
|---|---|
| Клик по чипу не открывает панель | Нет записей controls и нет атрибута с обоими min и max, или симуляция остановлена |
| Конкретная запись отсутствует на панели | Её type не является ни range, ни button, или у неё нет id |
| Ползунок двигается, но ничего не меняется | Чип закэшировал vx_attr_read вместо вызова там, где используется значение |
| Ползунок начинается не с того конца | default атрибута находится вне диапазона min/max элемента управления |
| Значение прыгает целыми числами | step был выведен как 1, потому что диапазон шире 20; задайте step явно |
| Логарифмический ползунок ведёт себя как линейный | scale: "log" игнорируется, когда min отрицательное |
См. также
Заголовок раздела «См. также»- Учебник: аналоговый датчик CO2
- Учебник: температура и влажность по I2C
- Справочник API пользовательских чипов
- Рабочие примеры всех полей здесь: кнопка, логарифмический ползунок, датчик SPI и датчик UART —– END PAGE —–