Voltar ao inícioComputação · 9º ano · Mudar de matéria
Começar grátis
9º ano · Computação
Pensamento computacional e robótica · Robótica

Programação de placas controladoras

Antes de começar, convém dominares: Algoritmos e pensamento computacional (6º ano do Ensino Fundamental (Anos Finais))
Antes de começar, convém dominares: Microcontroladores e robots (8º ano do Ensino Fundamental (Anos Finais))

Uma placa controladora faz exatamente o que o programa manda, certo ou errado: ela não adivinha o que você quis dizer. Por isso, antes de programar o portão da escola ou o semáforo de um cruzamento, é preciso pensar com clareza, e isso se faz com pseudocódigo, fluxogramas e estados. Ao final da página, você vai saber por que o portão de um estacionamento pode esmagar um carro e como evitar isso.

Algoritmo e programa

O mesmo algoritmo pode ser escrito de várias formas. O pseudocódigo descreve os passos com palavras (como no portugol); os blocos gráficos (Scratch, MakeCode) encaixam peças na tela. A forma muda, mas a lógica é a mesma.

Um mesmo algoritmo, o ciclo de um semáforo, escrito em pseudocódigo e em blocos, e executado por uma placa com três LEDs. pseudocódigo REPITA SEMPRE verde; espere 8 s amarelo; espere 2 s vermelho; espere 8 s blocos repita sempre acender verde acender amar. acender verm. placa controladora a mesma lógica, escrita de formas diferentes
Pratica★☆☆Por começar
Explique o que é um algoritmo e o que é um programa, e qual a diferença entre descrevê-lo em pseudocódigo (com palavras) e com blocos gráficos.

Explique o que é um algoritmo e o que é um programa, e qual a diferença entre descrevê-lo em pseudocódigo (com palavras) e com blocos gráficos.

Resolver
Pratica★☆☆Por começar
As instruções do programa de um semáforo estão desordenadas: (a) esperar 2 segundos, (b) acender a luz vermelha e apagar as demais, (c) acender a luz verde e apagar as…

As instruções do programa de um semáforo estão desordenadas: (a) esperar 2 segundos, (b) acender a luz vermelha e apagar as demais, (c) acender a luz verde e apagar as demais, (d) voltar ao início, (e) esperar 8 segundos (aparece duas vezes no ciclo), (f) acender a luz amarela e apagar as demais. Ordene-as corretamente e descreva o que faz o programa completo.

Resolver
Pratica★★☆Por começar
Escreva em pseudocódigo o programa completo de um semáforo simples: verde por 8 segundos, amarelo por 2, vermelho por 8, e recomeçar. Indique em cada passo quais luzes…

Escreva em pseudocódigo o programa completo de um semáforo simples: verde por 8 segundos, amarelo por 2, vermelho por 8, e recomeçar. Indique em cada passo quais luzes estão acesas e quais estão apagadas.

Resolver

Entradas e condicionais

Uma placa só reage ao mundo se ler entradas: perguntar ao pino de um sensor qual é o valor naquele instante. Há dois tipos de entrada:

  • Entrada digital: devolve apenas $0$ ou $1$. Exemplo: um botão solto ($0$) ou pressionado ($1$).

  • Entrada analógica: devolve um número dentro de uma faixa. Exemplos: a intensidade da luz ou a distância medida por um sensor.

O programa é lido de cima para baixo, e a condição só é avaliada no instante em que a execução passa por ela.

Pratica★☆☆Por começar
Explique o que significa «ler uma entrada» em um programa de controle e qual a diferença entre ler um botão (que dá 0 ou 1) e ler um sensor de luz (que dá um número…

Explique o que significa «ler uma entrada» em um programa de controle e qual a diferença entre ler um botão (que dá 0 ou 1) e ler um sensor de luz (que dá um número dentro de uma faixa).

Resolver
Pratica★☆☆Por começar
Explique o que é uma instrução condicional («se... então... senão...») e escreva a condição de que precisam estes dois avisos: um alarme que soa quando uma porta é…

Explique o que é uma instrução condicional («se... então... senão...») e escreva a condição de que precisam estes dois avisos: um alarme que soa quando uma porta é aberta e um aviso que apita quando a temperatura passa de $40\ ^\circ\text{C}$.

Resolver
Pratica★★☆Por começar
Um programa de ventilador diz: «se a temperatura for maior que $26\ ^\circ\text{C}$, desligar o ventilador; se for menor que $26\ ^\circ\text{C}$, ligá-lo». Descreva o…

Um programa de ventilador diz: «se a temperatura for maior que $26\ ^\circ\text{C}$, desligar o ventilador; se for menor que $26\ ^\circ\text{C}$, ligá-lo». Descreva o comportamento real do ventilador e escreva o programa corrigido.

Resolver

Combinando condições com E, OU e NÃO

Muitas decisões dependem de mais de uma informação. Para combinar testes, usamos os operadores lógicos:

Operador Resultado é VERDADEIRO quando…
A E B as duas condições são verdadeiras
A OU B pelo menos uma é verdadeira
NÃO A A é falsa (inverte o valor)

::interativo logica tipo=AND

Pratica★★☆Por começar
A cancela de um estacionamento só deve subir quando há um carro esperando (sensor) e, além disso, o motorista pegou o ticket (botão); desce quando o carro passou (um…

A cancela de um estacionamento só deve subir quando há um carro esperando (sensor) e, além disso, o motorista pegou o ticket (botão); desce quando o carro passou (um segundo sensor). Escreva o pseudocódigo completo do ciclo, combinando as duas condições ao mesmo tempo.

Resolver
Pratica★★★Por começar
O fluxograma da figura controla a cancela de saída de um estacionamento, com um sensor situado sob a cancela, mas falta uma das condições. Complete-o, descreva o…

O fluxograma da figura controla a cancela de saída de um estacionamento, com um sensor situado sob a cancela, mas falta uma das condições. Complete-o, descreva o comportamento completo e explique que acidente essa segunda verificação evita.

Início carro esperando? não sim Subir cancela ? não sim Baixar cancela
Resolver
Pratica★★★Por começar
O sistema de controle de uma cancela automática de pedágio dispõe de um sensor de presença 1 (logo antes da cancela) e de um sensor 2 (logo depois). Um operário propõe…

O sistema de controle de uma cancela automática de pedágio dispõe de um sensor de presença 1 (logo antes da cancela) e de um sensor 2 (logo depois). Um operário propõe este código:

repetir sempre:

    se (sensor_1 == DETECTADO) então:

        subir_cancela()

    se (sensor_1 == LIVRE) então:

        baixar_cancela()
  1. a) Preveja que acidente ocorrerá fisicamente assim que a frente do carro ultrapassar o sensor 1, se a parte traseira ainda estiver sob a cancela. Justifique por que a proposta do operário de «acrescentar uma pausa de 5,0 s antes de baixar» não resolve o problema com tráfego lento ou veículos articulados.
  2. b) Elabore em pseudocódigo um algoritmo seguro que utilize ambos os sensores para garantir que a cancela suba quando o veículo chegar, permaneça levantada enquanto qualquer um dos dois sensores detectar presença, e só baixe quando o veículo tiver liberado totalmente o sensor 2.
Resolver

Laços de repetição e a instrução esperar

Uma placa não «termina» o programa e sai: ela é ligada na tomada e deve reagir enquanto estiver ligada. Por isso a maior parte dos programas tem um laço principal (REPITA SEMPRE, o loop() do Arduino), que repete o ciclo ler → decidir → agir.

A pausa é essencial porque a placa executa milhões de instruções por segundo. Sem esperar, o LED de um semáforo trocaria de cor tão depressa que seus olhos veriam as luzes quase juntas. E um LED que deveria piscar a cada segundo ficaria praticamente aceso o tempo todo.

Sem o laço, um semáforo faria uma única volta (verde, amarelo, vermelho) e ficaria parado na última luz acesa para sempre.

Pratica★☆☆Por começar
Um programa tem apenas estas linhas: «repetir sempre: ler o botão; se estiver pressionado, acender o LED; se não, apagar o LED». Descreva com suas palavras o que faz a…

Um programa tem apenas estas linhas: «repetir sempre: ler o botão; se estiver pressionado, acender o LED; se não, apagar o LED». Descreva com suas palavras o que faz a montagem e raciocine sobre o que ocorreria se a parte «se não, apagar o LED» fosse apagada.

Resolver
Pratica★☆☆Por começar
Para que serve a instrução «esperar» (uma pausa) em um programa de controle? Dê dois exemplos em que, sem essa pausa, o sistema não cumpriria sua função.

Para que serve a instrução «esperar» (uma pausa) em um programa de controle? Dê dois exemplos em que, sem essa pausa, o sistema não cumpriria sua função.

Resolver
Pratica★☆☆Por começar
Explique por que quase todos os programas das placas controladoras têm um laço («repetir sempre») e descreva o que faria um semáforo cujo programa não tivesse laço.

Explique por que quase todos os programas das placas controladoras têm um laço («repetir sempre») e descreva o que faria um semáforo cujo programa não tivesse laço.

Resolver

Pausas que travam o programa

Uma pausa do tipo esperar(30) é bloqueante: durante esses 30 segundos a placa não faz mais nada, não lê botão nem sensor. Um temporizador não bloqueante guarda a contagem em uma variável e, a cada volta curta do laço, confere se o tempo acabou, e o programa continua lendo as entradas.

Comparação entre a espera bloqueante, em que a placa fica sem ler nada, e o temporizador não bloqueante, em que ela lê as entradas a cada volta. espera bloqueante 30 s sem ler nada o botão é ignorado durante a pausa temporizador não bloqueante lê, confere lê, confere lê, confere lê, confere as entradas são lidas a cada volta

Com esperar(30) bloqueante, o segundo apertão aos 15 s seria ignorado: a luz apagaria aos 30 s, e não 30 s depois do último apertão.

Pratica★★☆Por começar
Um alarme residencial, ao detectar a porta aberta, espera 10 segundos antes de soar para dar tempo de desativá-lo com um código. Escreva seu pseudocódigo incluindo a…

Um alarme residencial, ao detectar a porta aberta, espera 10 segundos antes de soar para dar tempo de desativá-lo com um código. Escreva seu pseudocódigo incluindo a verificação do código e explique para que serve esse atraso.

Resolver
Pratica★★☆Por começar
Em um semáforo com botão para pedestres, o programa só lê o botão uma vez a cada ciclo de 30 segundos. Explique o que o pedestre percebe ao pressionar e raciocine por…

Em um semáforo com botão para pedestres, o programa só lê o botão uma vez a cada ciclo de 30 segundos. Explique o que o pedestre percebe ao pressionar e raciocine por que as pausas longas dentro do programa afetam a rapidez de resposta do sistema.

Resolver
Pratica★★★Por começar
Um estudante programa o acendimento da luz de uma escada de condomínio: ao pressionar o interruptor, a luz deve permanecer acesa por 30 s e depois apagar. a) Se o…

Um estudante programa o acendimento da luz de uma escada de condomínio: ao pressionar o interruptor, a luz deve permanecer acesa por 30 s e depois apagar.

  1. a) Se o estudante implementa o atraso com uma função bloqueante do tipo esperar(30), preveja o que acontecerá se um segundo morador pressionar o interruptor 15 s depois de a luz ter acendido. Esse comportamento cumpre a função de um minuteiro de escada rearmável? Justifique sua resposta.
  2. b) Projete em pseudocódigo um sistema rearmável não bloqueante empregando uma variável tempo_restante e verificações periódicas (por exemplo, a cada 1,0 s), de modo que cada nova pressão reinicie a contagem regressiva em 30 s sem apagar a luz.
  3. c) Preveja que risco existe se um botão físico travar e ficar permanentemente acionado, e proponha uma modificação lógica para evitar que a luz fique acesa indefinidamente.
Resolver

Fluxogramas

Fluxograma com início, leitura de um sensor, losango de decisão com saídas sim e não e duas ações, com seta de volta formando um laço. início ler o sensor condição? sim ação A não ação B

Cada losango corresponde a um SE … ENTÃO … SENÃO do pseudocódigo, cada retângulo a uma instrução, e cada seta que volta a um laço. Traduzir entre as duas formas, sem mudar a lógica, é um bom teste para ver se você entendeu o algoritmo.

Pratica★☆☆Por começar
O fluxograma da figura governa a cancela de entrada de um estacionamento, mas falta a pergunta do losango. Escreva a condição que deveria ser verificada ali e descreva o…

O fluxograma da figura governa a cancela de entrada de um estacionamento, mas falta a pergunta do losango. Escreva a condição que deveria ser verificada ali e descreva o comportamento completo da cancela.

Início Ler botão ? sim Subir cancela Esperar 5 s Baixar cancela não
Resolver
Pratica★★☆Por começar
Uma luz de escada funciona assim: ao pressionar o botão, ela acende; passados 30 segundos, apaga sozinha; e o ciclo pode se repetir. Desenhe ou descreva seu fluxograma e…

Uma luz de escada funciona assim: ao pressionar o botão, ela acende; passados 30 segundos, apaga sozinha; e o ciclo pode se repetir. Desenhe ou descreva seu fluxograma e escreva depois o pseudocódigo correspondente.

Você pode fazer no papel e enviar uma foto com a sua resposta.

Resolver
Pratica★★☆Por começar
O fluxograma da figura é o programa de um robô seguidor de linha com um único sensor que fica sobre a borda da linha, mas falta a condição do losango. Complete-a,…

O fluxograma da figura é o programa de um robô seguidor de linha com um único sensor que fica sobre a borda da linha, mas falta a condição do losango. Complete-a, descreva o que o robô faz em cada caso e raciocine sobre o que ocorrerá quando a linha acabar.

Início Ler sensor ? sim Girar para a esquerda não Girar para a direita
Resolver

Estados em vez de esperas encadeadas

Máquina de estados de um semáforo: verde passa a amarelo após 8 s, amarelo a vermelho após 2 s e vermelho volta a verde após 8 s. verde amarelo vermelho 8 s 2 s 8 s

No semáforo com botão de pedestres, a opção «esperas encadeadas» (verde 30 s, amarelo 3 s, vermelho 15 s) só vê o botão uma vez por ciclo. Na máquina de estados, o programa fica no estado CARROS_VERDE, lendo o botão a cada volta, e só muda de estado quando o botão é pressionado (e o tempo mínimo de verde já passou). Para acrescentar um novo comportamento, como um pisca-pisca no verde dos pedestres, basta inserir um novo estado entre dois existentes, sem recalcular os tempos do resto.

Pratica★★★Por começar
Um instalador programa a central de alarme de uma residência com um sensor magnético na porta, outro na janela e uma chave de armação por meio deste algoritmo: a)…

Um instalador programa a central de alarme de uma residência com um sensor magnético na porta, outro na janela e uma chave de armação por meio deste algoritmo:

repetir sempre:

    se (armada == VERDADEIRO) e (porta == ABERTA ou janela == ABERTA) então:

        ativar_sirene()

        esperar(60) // segundos

        desativar_sirene()
  1. a) Analise o código e raciocine sobre duas falhas críticas de segurança: o que ocorre se um intruso abre a janela, entra e a fecha de novo em 3,0 s? E o que acontece se passam os 60 s e o intruso continua dentro com a janela aberta?
  2. b) Projete em pseudocódigo um algoritmo robusto com variáveis de estado que garanta: 1) uma vez disparada, a sirene soará pelo menos 60 s mesmo que o acesso seja fechado novamente; 2) não será desligada enquanto persistir a abertura dos sensores; e 3) se o usuário desligar a chave de armação, a sirene será interrompida imediatamente em qualquer instante.
Resolver
Pratica★★★Por começar
Para controlar um semáforo de veículos que inclui um botão de solicitação para pedestres, comparam-se duas estruturas de programação: Opção A (sequencial linear): laço…

Para controlar um semáforo de veículos que inclui um botão de solicitação para pedestres, comparam-se duas estruturas de programação:

  • Opção A (sequencial linear): laço com chamadas bloqueantes esperar(t) sucessivas (verde 30 s, amarelo 3 s, vermelho 15 s).

  • Opção B (máquina de estados): o sistema permanece no estado CARROS_VERDE e só transita de estado se detectar o sinal do botão de pedestres.

  1. a) Justifique por que a opção A é inadequada para atender imediatamente ao acionamento de um pedestre e que defeito de resposta isso provocará.
  2. b) Se for solicitado acrescentar uma nova função («o verde de pedestres deve piscar 3 vezes durante 3,0 s antes de passar a vermelho, mas somente se o sensor para deficientes visuais não estiver ativo»), raciocine sobre quais vantagens de modularidade e manutenção a opção B apresenta em relação à A.
  3. c) Projete o diagrama de estados ou pseudocódigo geral da opção B identificando claramente os estados, os eventos de entrada e as ações associadas a cada transição.
Resolver
Pratica★★★Por começar
Em uma ponte levadiça acionada por um motorredutor elétrico, propõe-se substituir os dois fins de curso físicos (fc_abajo e fc_arriba) por um controle baseado…

Em uma ponte levadiça acionada por um motorredutor elétrico, propõe-se substituir os dois fins de curso físicos (fc_abajo e fc_arriba) por um controle baseado exclusivamente em tempos: fazer o motor girar durante 5,0 s para abrir e 5,0 s para fechar.

  1. a) Preveja e justifique pelo menos duas situações reais (mecânicas, meteorológicas ou elétricas) em que este sistema por tempo fará com que a ponte não feche por completo ou acabe danificando o motor.
  2. b) Elabore em pseudocódigo o ciclo completo de manobra: ao detectar um barco, colocar o semáforo de trânsito viário em vermelho, esperar 3,0 s para desocupação, subir a ponte até fc_arriba, permitir a passagem fluvial com semáforo náutico em verde e, quando o barco sair, fechar até fc_abajo.
  3. c) Incorpore ao seu algoritmo um mecanismo de segurança por tempo máximo (watchdog): se transcorrerem mais de 8,0 s sem que o fim de curso correspondente seja ativado durante o movimento, o motor deve parar imediatamente e ativar um sinal luminoso de alarme.
Resolver

Depuração

Depuração: o sensor envia leituras à placa, onde se revisam a condição e a variável, e os valores são impressos no monitor serial. sensor variável se (condição) serial temp = 27 botão = 1 compare o valor impresso com o esperado e teste uma hipótese de cada vez
Pratica★★☆Por começar
Um programa conta carros: «repetir sempre: esperar que o sensor passe de 0 a 1; somar 1 à variável carros». Explique o que ele faz, para que pode servir e que problema…

Um programa conta carros: «repetir sempre: esperar que o sensor passe de 0 a 1; somar 1 à variável carros». Explique o que ele faz, para que pode servir e que problema aparece se um carro parar bem em cima do sensor.

Resolver
Pratica★★★Por começar
Uma equipe de robótica testa um rastreador seguidor de linha com dois sensores de infravermelho (E e D) separados por 2,0 cm, projetados para seguir uma linha preta de…

Uma equipe de robótica testa um rastreador seguidor de linha com dois sensores de infravermelho (E e D) separados por 2,0 cm, projetados para seguir uma linha preta de 1,5 cm sobre fundo branco. O programa atual aplica a lógica clássica: avançar em linha reta se ambos veem branco, virar à direita se D pisa no preto e à esquerda se E pisa no preto.

  1. a) Preveja o que acontecerá em uma curva muito fechada de 90° se o robô entrar rápido e os dois sensores ficarem ao mesmo tempo sobre o fundo branco fora da linha. Justifique por que o algoritmo básico falha.
  2. b) Projete em pseudocódigo uma melhoria que use uma variável de memória (ultimo_visto) para que o robô saiba para qual lado girar quando perde a linha por completo.
  3. c) Se a pista tivesse uma linha preta larga de 3,5 cm (mais larga que a distância entre os sensores), preveja o comportamento do robô em uma reta e explique qual condição adicional você deveria programar para tratar o caso em que ambos os sensores detectam preto ao mesmo tempo.
Resolver
Pratica★★★Por começar
Para automatizar a irrigação de uma horta escolar, dispõe-se de um sensor de umidade analógico e uma eletrobomba. Um primeiro programa aplica esta regra: «repetir…

Para automatizar a irrigação de uma horta escolar, dispõe-se de um sensor de umidade analógico e uma eletrobomba. Um primeiro programa aplica esta regra: «repetir sempre: se umidade < 30,0 %, ligar bomba; senão, desligar bomba; esperar 1 segundo».

  1. a) Se a leitura do sensor oscilar rapidamente entre 29,8 % e 30,2 % devido à absorção localizada ou a ruído elétrico, preveja qual comportamento a eletrobomba terá e quais serão as consequências mecânicas e elétricas.
  2. b) Explique por que substituir a espera por «esperar 10 minutos» também não garante uma irrigação ideal (analise o atraso na infiltração da água e o risco de irrigação excessiva).
  3. c) Elabore uma solução por controle com histerese: defina dois limiares lógicos de umidade distintos (partida e parada) e redija o pseudocódigo estruturado ou descreva detalhadamente o fluxograma correspondente, justificando por que ele evita as comutações constantes.
Resolver

Voltando ao início: a cancela esmaga o carro quando o programa decide só com o sensor da frente. Com um segundo sensor sob a cancela e a condição E, o acidente é evitado.

Resumo

Ver todos os exercícios deste tema