Questão nº 48
Questão de Engenharia Elétrica · FCC PGE-AM 2022 (nº 48)
Um botão ligado a um resistor de pull-up e ao pino 13 do ESP32 constitui o seu circuito de entrada, sendo o circuito de saída um LED ligado ao pino 12. Deseja-se que o botão, ao ser acionado, ligue o LED; caso contrário, o LED permanece desligado. Para tanto, um código foi desenvolvido na IDE Arduino, cuja etapa void loop é:
void loop ()
int botao = digitalRead (13);
if (botao == 0)
{
digitalWrite (12, HIGH);
}
else
{
digitalWrite (12, LOW);
}
delay (500);
}
Durante a compilação, surgiu uma mensagem de erro, cuja causa é:
- AO comando digitalRead está errado, sendo o correto: Digital Read.
- BFalta a abertura da chave após a função void loop (). (alternativa correta)
- CO teste do botão deveria ser (botao == 1).
- DO valor 500 para o comando delay é muito elevado.
- ENão há chave após o delay.
Resposta comentada
Gabarito Alternativa B
A função void loop() no Arduino é o coração do programa, onde o código principal é executado repetidamente. Ela deve sempre ser delimitada por chaves de abertura { e fechamento } para indicar o seu bloco de código.
- A) Incorreta: O comando
digitalReadestá escrito corretamente em Arduino, que é uma linguagem sensível a maiúsculas e minúsculas.Digital Readseria um erro de sintaxe. - (B) Correta: Falta a chave de abertura
{logo apósvoid loop (). Sem ela, o compilador não consegue identificar o bloco de código pertencente à funçãoloop, gerando um erro de sintaxe. - C) Incorreta: Com um resistor de pull-up, o pino de entrada lê
HIGH(1) quando o botão está solto eLOW(0) quando o botão é pressionado (conectado ao GND). Portanto,(botao == 0)está correto para detectar o acionamento do botão. Armadilha: Esta alternativa tenta confundir o estudante sobre o funcionamento de botões com pull-up, um conceito fundamental. Muitos iniciantes podem pensar que "pressionado" sempre significa um valor alto (1). - D) Incorreta: O valor
500para odelay(0.5 segundo) é um valor válido e comum, não causando erro de compilação. Pode ser alto para algumas aplicações, mas não é um erro de sintaxe. - E) Incorreta: Há uma chave de fechamento
}após odelay(500);. O problema é a ausência da chave de abertura para a funçãovoid loop(), não a ausência de uma chave de fechamento.
Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia Elétrica (Caderno Tipo 001). Reproduzida para fins de estudo.