Nome: ______________________________
Data: ____________________
Semana 5
Fazendo os robôs reagirem
Combine sensores com laços de repetição e condições para um robô reagir ao mundo sozinho.
70 a 85 minutos
Ideias principais
Laços: repetir sem reescrever
Na semana 3 você escreveu cada passo em fila. Isso funciona, mas se você quer que o robô confira o sensor cem vezes, não vai querer escrever o mesmo passo cem vezes. Um laço é um bloco que repete os passos para você.
Laços infinitos e laços repetir-até
Um laço infinito repete os passos dele sem parar e nunca acaba sozinho: continua até você parar o programa. Os robôs usam laços infinitos para não parar de observar o mundo, tipo "para sempre: leia o sensor e reaja".
Condições são verdadeiras ou falsas (booleanas)
Uma condição é uma pergunta sobre o mundo que só pode ser respondida com sim ou não; em programação a gente diz verdadeiro ou falso. Um valor que só pode ser verdadeiro ou falso se chama booleano.
Se e se/senão: escolher o que fazer
Um bloco se roda os passos dele só quando a condição é verdadeira. "Se a parede estiver perto, vire à direita" quer dizer que o robô vira só quando há mesmo uma parede perto; caso contrário, ele pula a curva.
Desvio de obstáculos = laço + sensor + se/senão
Agora junte tudo. O desvio de obstáculos é um laço infinito que lê o sensor de distância e usa se/senão para decidir: se algo estiver perto, afaste-se; senão, continue andando. Como o laço se repete várias vezes por segundo, o robô reage no instante em que um obstáculo aparece.
Seguimento de linha: continue conferindo e corrigindo
O seguimento de linha usa um sensor de luz ou de cor apontado para o chão. Uma linha escura reflete menos luz do que um chão claro, então o sensor consegue distinguir "em cima da linha" de "fora da linha". O robô fica conferindo, de novo e de novo, e se guia para continuar em cima da linha.
Palavras para conhecer
- Laço de repetição:
- Um bloco que repete um ou mais passos, em vez de você escrever tudo de novo várias vezes.
- Laço infinito:
- Um laço que fica repetindo os passos dele sem parar, até você parar o programa.
- Repetir-até:
- Um laço que repete os passos dele até uma condição virar verdadeira, e aí para e segue em frente.
- Condição:
- Uma verificação sobre o mundo, tipo "a parede está perto?", que é sempre verdadeira ou falsa.
- If:
- Um bloco que roda os passos dele só quando a condição é verdadeira, e pula esses passos quando ela é falsa.
- Se/senão:
- Um bloco que roda um conjunto de passos quando a condição é verdadeira e outro conjunto quando ela é falsa.
- Booleano:
- Um valor que só pode ser uma de duas coisas: verdadeiro ou falso. As condições dão uma resposta booleana.
- Desvio de obstáculos:
- Um comportamento em que o robô repete em laço, lê um sensor de distância e se afasta quando algo está perto.
- Seguimento de linha:
- Um comportamento em que o robô fica conferindo um sensor de luz ou de cor e se guia para continuar em cima de uma linha marcada.
- Comportamento reativo:
- Quando um robô muda o que faz com base no que percebe, em tempo real, em vez de seguir uma lista fixa.
A sua atividade
Programa de desvio de obstáculos
Objetivo: Programar um robô para repetir em laço, ler um sensor de distância e usar se/senão para virar quando algo estiver perto e andar para a frente quando o caminho estiver livre.
- O padrão é sempre o mesmo: laço infinito, ler o sensor de distância, e depois se/senão: se algo estiver perto, vire; senão, ande para a frente.
- Primeiro decida a sua regra de proximidade (por exemplo, "menos de 10 cm conta como perto"). Depois monte o laço para o robô continuar reagindo o tempo todo em que estiver funcionando.
Escreva o que aconteceu:
Exploração do seguimento de linha
Objetivo: Usar um sensor de luz ou de cor com repetir-até e se para manter um robô se guiando ao longo de uma linha marcada.
- O seguimento de linha é um comportamento de conferir sem parar: de novo e de novo, leia o sensor de luz ou de cor e corrija o rumo para continuar em cima da linha.
- Uma regra simples já resolve: se o sensor estiver em cima da linha, curve para um lado; senão, curve para o outro. Coloque isso dentro de um laço repetir-até que termine quando o robô chegar à marca final.
Escreva o que aconteceu:
Preveja
Escreva o seu palpite antes de testar.
Antes de rodar o programa de obstáculos: quando o robô encontrar uma parede, o que você prevê que ele vai fazer, e por quê?
Preveja: se você tirar o ler sensor de dentro do laço, como as reações do robô vão mudar?
Teste e registre
Teste de confiabilidade do desvio de obstáculos
Coloque o robô diante de um obstáculo e rode o programa. Registre se ele se afastou a tempo. Repita três vezes a partir do mesmo ponto de partida.
Registre: Em quantas das três tentativas o robô conseguiu desviar do obstáculo
| Try | Ele desviou do obstáculo? (S/N) | O que ele fez |
|---|---|---|
Verificação de aprendizagem
Responda cada pergunta. Nas de múltipla escolha, circule a melhor resposta.
Decida se esta afirmação é verdadeira ou falsa.
“Um laço infinito para sozinho depois de alguns segundos.”
Circule uma: Verdadeiro / Falso
O que um laço faz num programa?
- A.Faz o robô andar mais rápido
- B.Repete um ou mais passos, em vez de escrevê-los de novo e de novo
- C.Para o robô
- D.Acrescenta um sensor novo
Qual é a diferença entre um laço infinito e um laço repetir-até?
- A.Um laço infinito roda uma vez; um repetir-até roda duas
- B.Um laço infinito se repete até você parar o programa; um repetir-até se repete até uma condição virar verdadeira
- C.Eles são exatamente iguais
- D.Um laço infinito precisa de sensor e um repetir-até não
Uma condição tipo "a parede está perto?" só pode ser:
- A.Um número em centímetros
- B.Verdadeira ou falsa (um booleano)
- C.Uma cor
- D.Uma velocidade de motor
O que um bloco se/senão faz?
- A.Roda um conjunto de passos quando a condição é verdadeira e outro quando ela é falsa
- B.Repete um passo dez vezes
- C.Roda sempre os dois conjuntos de passos
- D.Lê um sensor
Como funciona o desvio de obstáculos?
- A.O robô percorre um trajeto fixo que alguém mandou uma vez só
- B.Um laço lê o sensor de distância e, se algo estiver perto, o robô vira; senão, ele anda para a frente
- C.O robô espera uma pessoa pilotá-lo em volta de cada obstáculo
- D.O robô se desliga quando vê um obstáculo
Refletir
Que decisão o seu robô toma repetidas vezes, e que informação ele usa para isso?
Por que um robô que reage precisa de um laço em volta da verificação do sensor, em vez de conferir uma vez só?
Descreva um robô de verdade que reage ao mundo e diga qual condição ele verifica.