Sensores programáveis
Um sensor programável é um chip personalizado comum cujas leituras você controla a partir de um controle deslizante enquanto a simulação roda. Um sensor de CO2 cujo ppm você varre para testar um limite de alarme. Uma sonda de temperatura que você empurra acima de 85 °C para ver o que o firmware faz. Um sensor de luz que você diminui manualmente.
Nada no chip muda: é o mesmo componente WebAssembly descrito em Introdução. O que esta página adiciona é o fio que transporta um valor de controle deslizante para um chip que já está em execução, sem recompilar ou reiniciar nada.
O contrato, em três partes
Seção intitulada “O contrato, em três partes”Todo sensor programável é estas três peças e nada mais.
1. Um atributo armazena o valor ajustável.
S.ppm = vx_attr_register("ppm", 1000);2. Uma entrada controls em chip.json coloca um controle deslizante na tela. Ela
endereça o atributo pelo mesmo id:
"controls": [ { "id": "ppm", "label": "CO2 (ppm)", "type": "range", "min": 400, "max": 5000, "step": 10, "unit": "ppm" }]3. Seu código relê o atributo toda vez que precisar do valor:
double ppm = vx_attr_read(S.ppm); /* o valor do controle deslizante agora */Pressione Run (Executar), clique no chip, e isto abre:

Esse terceiro ponto é o que confunde as pessoas. Leia o atributo uma vez
em chip_setup() e armazene-o em cache em uma variável, e o controle deslizante aparecerá,
se moverá e não fará absolutamente nada. vx_attr_read é barato; chame-o dentro
do seu callback de temporizador, do seu manipulador de leitura I2C, onde quer que o valor seja
realmente necessário.
Como o valor chega ao seu chip
Seção intitulada “Como o valor chega ao seu chip”Vale a pena entender, porque os dois mecanismos de simulação usam rotas diferentes e os modos de falha diferem.
| Etapa | O que acontece |
|---|---|
| Você arrasta o controle deslizante | O painel grava no registro de atualização do sensor, identificado por esta instância do chip |
| Mecanismo do navegador (AVR, RP2040, ESP32 no navegador) | O valor é escrito diretamente no mapa de atributos que o WebAssembly em execução lê a cada vx_attr_read. Sem passagem de mensagens, sem reinicialização |
| ESP32 sob QEMU | O chip vive em um worker, então o valor é encaminhado a ele como uma atualização de atributo e aplicado lá |
| A cada 250 ms de inatividade | Os últimos valores são espelhados nas propriedades salvas do componente, para que a posição do controle deslizante sobreviva a um salvar e recarregar |
Duas consequências que valem a pena conhecer:
- Não há etapa de “aplicar”. A próxima chamada
vx_attr_readretorna o novo valor. Se o seu chip só lê o atributo uma vez por segundo, é quanto tempo o controle deslizante leva para fazer algo visivelmente. - O painel é por instância. Duas cópias do mesmo chip em uma única tela têm controles deslizantes independentes, porque os controles são sintetizados a partir do manifesto de cada instância.
Padrões de tempo de design versus valores ao vivo
Seção intitulada “Padrões de tempo de design versus valores ao vivo”São superfícies diferentes e as pessoas as confundem:
- Parado: clique com o botão direito no chip para abrir o inspetor de peças. O que você define lá é o padrão salvo do atributo, o valor com o qual o chip inicia.
- Em execução: clique no chip. O painel de controle deslizante abre. O que você define lá é o valor ao vivo, aplicado imediatamente.
Experimente um primeiro
Seção intitulada “Experimente um primeiro”Todo padrão tem um circuito executável na galeria. Pressione Run (Executar), depois clique no chip:
| Exemplo | O que ensina |
|---|---|
| Sensor de CO2 (controle deslizante ao vivo) | A receita analógica: controle deslizante para tensão para analogRead |
| Sensor Ambiental I2C (controles deslizantes ao vivo) | Dois controles deslizantes atrás de um mapa de registros em 0x44 |
| Sensor de Movimento (botão de simulação) | O controle button: gatilho momentâneo mais um controle deslizante de retenção |
| Luz Noturna (controle deslizante de lux log) | scale: "log": cinco décadas de lux em um controle deslizante, lâmpada dispara abaixo de 50 lx |
| Termômetro SPI (controle deslizante ao vivo) | Temporização de escravo SPI: trava na borda de descida do CS |
| Sensor de Ar UART (controle deslizante ao vivo) | Sensor serial estilo push para SoftwareSerial |
Onde ir a seguir
Seção intitulada “Onde ir a seguir”- Tutorial: um sensor de CO2 analógico
— o exemplo completo mais curto, de chip vazio a
analogReadrastreando um controle deslizante. - Tutorial: temperatura e umidade via I2C — o padrão para qualquer sensor de protocolo digital, com dois controles deslizantes e um mapa de registros.
- Referência de
controls— todos os campos, as regras automáticas de fallback e o que verificar quando um controle deslizante não faz nada.