Lição do Teach
Robô Arduino Visual (3/4): sensores de proximidade sem colisões
Os estudantes leem sensores de proximidade, escolhem um limiar a partir de observações e programam uma reação segura antes de o robô colidir.
Entre com uma conta de professor para preparar uma sessão. Os estudantes entram com um código da turma.
Ainda não tem uma conta na LabsLand? Criar sua conta de professor
Objetivos de aprendizagem
Ler sensores de proximidade antes de tomar uma decisão.
Calibrar um limiar simples a partir de observações.
Programar uma reação segura diante de um obstáculo próximo.
Visualização da atividade do estudante
Conteúdo da atividade
Apenas visualização. Em uma sessão de aula, os estudantes podem preencher respostas e entregar o trabalho ao professor.
Sensor antes da decisão
8 min
O sensor não decide sozinho. O programa lê, compara com um limiar e escolhe uma reação segura.
Um sensor mede algo e fornece uma leitura. A contagem de proximidade responde à luz infravermelha refletida; não é uma distância em centímetros. Superfície, ângulo e posição influenciam. Compare leituras reais em posições seguras antes de decidir se uma contagem maior indica menor distância no seu teste.
Um limiar é o número de corte que separa "seguro" de "perto demais". O programa:
- Lê os sensores.
- Compara a leitura com um limiar.
- Escolhe uma reação.
- Observa se a reação foi segura.
Se uma leitura de proximidade aumenta quando um objeto está mais perto, o que significa usar a condição leitura >= 3? Por que não convém escolher o limiar sem observar primeiro?
Medir antes de reagir
20 min
Posicionamento remoto: mova o robô; você não pode mover um objeto físico na sala. Ao enviar o programa, selecione Only robots on 8-shaped circuits (circuitos em forma de oito). O piso branco, a linha preta e a parede são referências fixas. Localize a frente do robô na câmera e confira o espaço livre. Acrescente o esquema de posicionamento abaixo. Cada novo pressionamento de B produz um único avanço de 100 ms; solte antes de pressionar novamente. A e C podem usar o mesmo padrão para virar (−125,125 ou 125,−125). Leia somente com os dois motores parados. Não avance contra uma parede para forçar uma leitura alta; mantenha uma distância visível e informe posições que não puder medir com segurança.
[Button B as stepButton] (Buttons)
[Setup Serial speed 9600]
Arduino run first:
[Change two motors speed] Left: 0 Right: 0
Arduino loop forever:
if [stepButton single press]:
[Change two motors speed] Left: 125 Right: 125
[wait] 100 milliseconds
[Change two motors speed] Left: 0 Right: 0
... leia os sensores e mostre o valor aqui ...
[wait] 50 milliseconds
Use single press, não is pressed: ele dispara uma vez por novo pressionamento, mesmo mantendo o botão. Deixe o bloco separado Button B as stepButton na área de trabalho e selecione stepButton na condição. A parada fica dentro da condição, após o pulso. Teste uma vez em espaço livre e observe por três segundos: deve ficar parado até um novo pressionamento. Se não se mover, confira envio, botão e espaço antes de alterar o pulso.
O editor em inglês rotula o bloco central/esquerdo como center sensor detect on his left; escolha center e left nos dois menus.
Após a condição de posicionamento, acrescente
Read proximity sensors, imprimacenter sensor detect on his lefte espere 300 ms. Use sempre o mesmo lado. Com os motores parados, meça três posições seguras a distâncias diferentes da mesma parede; descreva-as pela câmera sem inventar centímetros. Sem saída serial, construa agora a decisão com LED abaixo usando limiar inicial 3 e registre LED ligado/desligado e esse limiar, sem inventar números. Depois escolha um limiar com a tabela. Se as leituras não distinguirem posições, registre isso e explique por que a calibração é inconclusiva.```text
[Read proximity sensors]
if [center sensor detect on his left >= o número escolhido]: [Set red led to HIGH] [Set blue led to LOW]
else: [Set red led to LOW] [Set blue led to HIGH]
[Change two motors speed] Left: 0 Right: 0
```
| Situação observada | Sensor usado | Leitura (número, ou onde o LED reage) | Deveria reagir? | Notas |
|---|---|---|---|---|
Escolha um limiar provisório de aviso com duas observações. Se não distinguirem posições, explique por que ele ainda não está justificado e proponha outro teste seguro.
Programar uma reação segura
18 min
Construa um aviso de proximidade com o robô parado e seu limiar calibrado. Somente a condição de posicionamento pode movê-lo. As duas saídas do aviso deixam os motores parados. Teste uma posição mais distante e outra mais próxima, ambas seguras, e confira se o LED as distingue. Se o limiar não separar as observações, a calibração é inconclusiva; não comprova condução autônoma segura.
[Read proximity sensors]
if [center sensor detect on his left >= o número escolhido]:
[Set red led to HIGH]
[Set blue led to LOW]
else:
[Set red led to LOW]
[Set blue led to HIGH]
[Change two motors speed] Left: 0 Right: 0A reação ocorreu cedo demais, tarde demais ou no momento adequado? Indique o que você mudaria: limiar, velocidade ou tempo de espera.
Descreva uma limitação deste sensor ou do seu teste. Por exemplo: objeto mal posicionado, leitura instável, robô em outra posição ou falta de tempo de câmera.
Entrega de evidência
9 min
Programa de reação por proximidade
Entregue seu limiar, uma captura ou descrição do programa e uma observação de um teste em que o robô reagiu ou deveria ter reagido.
Transforme esta visualização em uma sessão de aula
Continue para o LabsLand Teach para usar esta lição com seus estudantes e conferir o acesso disponível para sua conta.
Ainda não tem uma conta na LabsLand? Criar sua conta de professor