Pular para o conteúdo principal

Questão de Automação — Processo Administrativo - Lei nº 9.784 de 1999 e Lei nº 14.210 de 2021 — IF-SP 2026

AutomaçãoProcesso Administrativo - Lei nº 9.784 de 1999 e Lei nº 14.210 de 2021
Código
qg710356
Banca
IF-SP
Órgão
IF-SP
Ano
2026
Nível
Médio
Cargo
Técnico de Laboratório/Área: Automação Industrial
Um técnico de laboratório está desenvolvendo um protótipo de automação utilizando uma placa Arduino. O sistema deve realizar duas tarefas simultaneamente:• Ler um sensor de temperatura a cada 200 ms.• Monitorar um botão de emergência que, se pressionado, deve acionar um alarme instantaneamente.Na primeira versão do código, o técnico utilizou a função delay(200) dentro do loop principal para temporizar a leitura do sensor. No entanto, durante os testes, percebeu-se que o sistema frequentemente falhava em detectar o acionamento rápido do botão de parada enquanto o processador estava executando na função de atraso.Para corrigir esse problema de bloqueio e permitir que o botão seja lido continuamente, qual estrutura lógica deve ser implementada em substituição ao uso do delay()?
  1. ASubstituir a função delay(200) pela função delayMicroseconds(200000), que possui maior precisão e, por isso, não bloqueia a Unidade Lógica e Aritmética (ULA) do processador.
  2. BAumentar a frequência de clock do micro controlador via software para que a função delay(200) seja executada mais rapidamente, liberando o processador para ler o botão.
  3. CColocar a leitura do botão dentro de uma estrutura while(true) aninhada no loop principal, garantindo que o botão tenha prioridade total sobre o sensor.
  4. DUtilizar a função millis() para capturar o tempo de execução atual e compará-lo com uma variável que armazena o tempo da última leitura (previousMillis), executando a leitura apenas quando a diferença for maior ou igual a 200 ms.
Revelar gabarito e comentário

GabaritoD — Utilizar a função millis() para capturar o tempo de execução atual e compará-lo com uma variável que armazena o tempo da última leitura (previousMillis), executando a leitura apenas quando a diferença for maior ou igual a 200 ms.

Link permanente: /questoes/qg710356